X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=gmqcc.h;h=cc952345986c7e6ae2578c73fcc48616ccd258a7;hp=32028c11c7643e6f6ac087ad12e1aa6aa9cef54d;hb=8bee9a681984eaf45b2f83b839c40172646d81d3;hpb=462c06d56bfab0e0c430e3910d9fcba88cca19da diff --git a/gmqcc.h b/gmqcc.h old mode 100644 new mode 100755 index 32028c1..cc95234 --- a/gmqcc.h +++ b/gmqcc.h @@ -36,12 +36,11 @@ */ #ifdef _MSC_VER # pragma warning(disable : 4244 ) /* conversion from 'int' to 'float', possible loss of data */ -# pragma warning(disable : 4018 ) /* signed/unsigned mismatch */ #endif /*! _MSC_VER */ #define GMQCC_VERSION_MAJOR 0 -#define GMQCC_VERSION_MINOR 3 -#define GMQCC_VERSION_PATCH 0 +#define GMQCC_VERSION_MINOR 2 +#define GMQCC_VERSION_PATCH 9 #define GMQCC_VERSION_BUILD(J,N,P) (((J)<<16)|((N)<<8)|(P)) #define GMQCC_VERSION \ GMQCC_VERSION_BUILD(GMQCC_VERSION_MAJOR, GMQCC_VERSION_MINOR, GMQCC_VERSION_PATCH) @@ -168,17 +167,6 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ typedef __int64 int64_t; #endif /*! _MSC_VER */ -/* - *windows makes these prefixed because they're C99 - * TODO: utility versions that are type-safe and not - * just plain textual subsitution. - */ -#ifdef _MSC_VER -# define snprintf(X, Y, Z, ...) _snprintf(X, Y, Z, __VA_ARGS__) - /* strtof doesn't exist -> strtod does though :) */ -# define strtof(X, Y) (float)(strtod(X, Y)) -#endif /*! _MSC_VER */ - /* * Very roboust way at determining endianess at compile time: this handles * almost every possible situation. Otherwise a runtime check has to be @@ -263,7 +251,7 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ * On windows systems where we're not compiling with MING32 we need a * little extra help on dependinces for implementing our own dirent.h * in fs.c. - */ + */ #if defined(_WIN32) && !defined(__MINGW32__) # define _WIN32_LEAN_AND_MEAN # include @@ -275,7 +263,7 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ unsigned short d_reclen; unsigned short d_namlen; char d_name[FILENAME_MAX]; - } + }; typedef struct { struct _finddata_t dd_dta; @@ -284,6 +272,14 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ int dd_stat; char dd_name[1]; } DIR; + /* + * Visual studio also lacks S_ISDIR for sys/stat.h, so we emulate this as well + * which is not hard at all. + */ +# ifdef S_ISDIR +# undef S_ISDIR +# endif /*! S_ISDIR */ +# define S_ISDIR(X) ((X)&_S_IFDIR) #else # include #endif /*! _WIN32 && !defined(__MINGW32__) */ @@ -313,8 +309,18 @@ uint16_t util_crc16(uint16_t crc, const char *data, size_t len); void util_seed(uint32_t); uint32_t util_rand(); -int util_vasprintf(char **ret, const char *fmt, va_list); -int util_asprintf (char **ret, const char *fmt, ...); +/* + * String functions (formatting, copying, concatenating, errors). These are wrapped + * to use the MSVC _safe_ versions when using MSVC, plus some implementations of + * these are non-conformant or don't exist such as asprintf and snprintf, which are + * not supported in C90, but do exist in C99. + */ +int util_vasprintf(char **ret, const char *fmt, va_list); +int util_asprintf (char **ret, const char *fmt, ...); +int util_snprintf (char *src, size_t bytes, const char *format, ...); +char *util_strcat (char *dest, const char *src); +char *util_strncpy (char *dest, const char *src, size_t num); +const char *util_strerror (int num); #ifdef NOTRACK @@ -421,7 +427,7 @@ void util_htrm (hash_table_t *ht, const char *key, void (*cb)(void*)); void *util_htget (hash_table_t *ht, const char *key); void *util_htgeth(hash_table_t *ht, const char *key, size_t hash); - + /*===================================================================*/ /*============================ file.c ===============================*/ /*===================================================================*/ @@ -432,7 +438,7 @@ int fs_file_getc (FILE *); int fs_file_printf (FILE *, const char *, ...); int fs_file_puts (FILE *, const char *); int fs_file_seek (FILE *, long int, int); -long int fs_file_tell (FILE *); +long int fs_file_tell (FILE *); size_t fs_file_read (void *, size_t, size_t, FILE *); size_t fs_file_write (const void *, size_t, size_t, FILE *); @@ -1006,9 +1012,11 @@ typedef struct { /* * line, file, counter, counter_last, random, random_last, date, time + * time_stamp. + * * increment when items are added */ -#define FTEPP_PREDEF_COUNT 8 +#define FTEPP_PREDEF_COUNT 9 struct ftepp_s *ftepp_create (); bool ftepp_preprocess_file (struct ftepp_s *ftepp, const char *filename);