#define LittleLong(l) (l)
#define BigFloat(l) FloatSwap(l)
#define LittleFloat(l) (l)
-#elif ENDIAN_BIG
+#elif defined(ENDIAN_BIG)
// big endian
#define BigShort(l) (l)
#define LittleShort(l) ShortSwap(l)
#define GAME_ZYMOTIC 9
#define GAME_FNIGGIUM 10
#define GAME_SETHERAL 11
+#define GAME_SOM 12
extern int gamemode;
extern char *gamename;
} stringlist_t;
int matchpattern(char *in, char *pattern, int caseinsensitive);
+stringlist_t *stringlistappend(stringlist_t *current, char *text);
+void stringlistfree(stringlist_t *current);
+stringlist_t *stringlistsort(stringlist_t *start);
stringlist_t *listdirectory(char *path);
void freedirectory(stringlist_t *list);
// strlcat and strlcpy, from OpenBSD
// Most (all?) BSDs already have them
-#if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__)
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || (defined(__APPLE__) && defined(__MACH__))
+# define HAVE_STRLCAT 1
+# define HAVE_STRLCPY 1
+#endif
+#ifndef HAVE_STRLCAT
/*
* Appends src to string dst of size siz (unlike strncat, siz is the
* full size of dst, not space left). At most siz-1 characters
* If retval >= siz, truncation occurred.
*/
size_t strlcat(char *dst, const char *src, size_t siz);
+#endif // #ifndef HAVE_STRLCAT
+#ifndef HAVE_STRLCPY
/*
* Copy src to string dst of size siz. At most siz-1 characters
* will be copied. Always NUL terminates (unless siz == 0).
*/
size_t strlcpy(char *dst, const char *src, size_t siz);
-#endif // #if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__)
+#endif // #ifndef HAVE_STRLCPY
#endif