// MSVC has a different name for several standard functions
#ifdef WIN32
-# define snprintf _snprintf
-# define vsnprintf _vsnprintf
# define strcasecmp stricmp
# define strncasecmp strnicmp
#endif
// does a varargs printf into a temp buffer
+// snprintf and vsnprintf are NOT portable. Use their DP counterparts instead
+#define snprintf DO_NOT_USE_SNPRINTF__USE_DPSNPRINTF
+#define vsnprintf DO_NOT_USE_VSNPRINTF__USE_DPVSNPRINTF
+
+// dpsnprintf and dpvsnprintf
+// return the number of printed characters, excluding the final '\0'
+// or return -1 if the buffer isn't big enough to contain the entire string.
+// buffer is ALWAYS null-terminated
+extern int dpsnprintf (char *buffer, size_t buffersize, const char *format, ...);
+extern int dpvsnprintf (char *buffer, size_t buffersize, const char *format, va_list args);
+
+
//============================================================================
extern struct cvar_s registered;
extern int gamemode;
extern const char *gamename;
-extern const char *gamedirname;
+extern const char *gamedirname1;
+extern const char *gamedirname2;
extern const char *gamescreenshotname;
+extern const char *gameuserdirname;
extern char com_modname[MAX_OSPATH];
void COM_ToLowerString (const char *in, char *out, size_t size_out);
stringlist_t *stringlistappend(stringlist_t *current, char *text);
void stringlistfree(stringlist_t *current);
stringlist_t *stringlistsort(stringlist_t *start);
-stringlist_t *listdirectory(char *path);
+stringlist_t *listdirectory(const char *path);
void freedirectory(stringlist_t *list);
char *SearchInfostring(const char *infostring, const char *key);