No more hacks
authorDale Weiler <killfieldengine@gmail.com>
Thu, 20 Dec 2012 10:20:16 +0000 (10:20 +0000)
committerDale Weiler <killfieldengine@gmail.com>
Thu, 20 Dec 2012 10:20:16 +0000 (10:20 +0000)
Makefile
con.c
gmqcc.h
util.c

index 5c26cdfda8a4b9241777b77a525ce86319b98ae9..63b41c629bfae99d7c0c8ace28a1a63bfba1ae8d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ CYGWIN  = $(findstring CYGWIN,  $(UNAME))
 MINGW   = $(findstring MINGW32, $(UNAME))
 
 CC     ?= clang
-CFLAGS += -Wall -Wextra -I. -pedantic-errors -std=gnu99
+CFLAGS += -Wall -Wextra -I. -pedantic-errors
 #turn on tons of warnings if clang is present
 # but also turn off the STUPID ONES
 ifeq ($(CC), clang)
diff --git a/con.c b/con.c
index 7406caed3fc67ab25a01bdc476645cb9b395d253..3fca6ef76fbdd8a576e85beaec822e700581e704 100644 (file)
--- a/con.c
+++ b/con.c
  * + some other things likewise.
  */
 #ifndef _WIN32
-#include <unistd.h>
+#   include <unistd.h>
+#else
+#   include <io.h>
+    /*
+     * Windows and it's posix underscore bullshit.  We simply fix this
+     * with yay, another macro :P
+     */
+#   define isatty _isatty
 #endif
 
 #define GMQCC_IS_STDOUT(X) ((FILE*)((void*)X) == stdout)
@@ -59,12 +66,6 @@ typedef struct {
 #define STDERR_FILENO 2
 #define STDOUT_FILENO 1
 
-/*
- * Windows and it's posix underscore bullshit.  We simply fix this
- * with yay, another macro :P
- */
-#define isatty _isatty
-
 enum {
     RESET = 0,
     BOLD  = 1,
diff --git a/gmqcc.h b/gmqcc.h
index 234aaa9cfb28edbf36a4c7facd14a9ad977e274d..d39eda3acddbbee9cc1db8a6534f851fd8443b13 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
 #    define GMQCC_NORETURN
 #endif
 
-/* no stdint.h in < C99 */
-#if __STDC_VERSION__ < 199901L
-#   if   CHAR_MIN  == -128
-        typedef unsigned char  uint8_t; /* same as below */
-#   elif SCHAR_MIN == -128
-        typedef unsigned char  uint8_t; /* same as above */
-#   endif
-#   if   SHRT_MAX  == 0x7FFF
-        typedef short          int16_t;
-        typedef unsigned short uint16_t;
-#   elif INT_MAX   == 0x7FFF
-        typedef int            int16_t;
-        typedef unsigned int   uint16_t;
-#   endif
-#   if   INT_MAX   == 0x7FFFFFFF
-        typedef int            int32_t;
-        typedef unsigned int   uint32_t;
-#   elif LONG_MAX  == 0x7FFFFFFF
-        typedef long           int32_t;
-        typedef unsigned long  uint32_t;
-#   endif
-
-#   if defined(__GNUC__) || defined (__CLANG__)
-        typedef int              int64_t  __attribute__((__mode__(__DI__)));
-        typedef unsigned int     uint64_t __attribute__((__mode__(__DI__)));
-#   elif defined(_MSC_VER)
-        typedef __int64          int64_t;
-        typedef unsigned __int64 uint64_t;
-#   else
-        /*
-        * Incorrectly size the types so static assertions below will
-        * fail.  There is no valid way to get a 64bit type at this point
-        * without making assumptions of too many things.
-        */
-        typedef struct { char _fail : 0; } int64_t;
-        typedef struct { char _fail : 0; } uint64_t;
-#   endif
-    /* Ensure type sizes are correct: */
-    typedef char uint8_size_is_correct  [sizeof(uint8_t)  == 1?1:-1];
-    typedef char uint16_size_is_correct [sizeof(uint16_t) == 2?1:-1];
-    typedef char uint32_size_is_correct [sizeof(uint32_t) == 4?1:-1];
-    typedef char uint64_size_is_correct [sizeof(uint64_t) == 8?1:-1];
-    typedef char int16_size_if_correct  [sizeof(int16_t)  == 2?1:-1];
-    typedef char int32_size_is_correct  [sizeof(int32_t)  == 4?1:-1];
-    typedef char int64_size_is_correct  [sizeof(int64_t)  >= 8?1:-1];
-#else
+/* TODO: visual studiblows work around */
+#ifndef _MSC_VER
 #   include <stdint.h>
 #endif
 
diff --git a/util.c b/util.c
index d1eb5b43754052448cb655dcfa57ae82ba72aa6c..4a8b164b2af1d913f74299381bf77d70718b5d73 100644 (file)
--- a/util.c
+++ b/util.c
@@ -533,7 +533,7 @@ typedef struct hash_node_t {
  * below.  These should be autovectorized by gcc.
  */
 #ifdef __x86_64__
-static GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
+GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
     const uint64_t       mix   = 0xC6A4A7935BD1E995UL;
     const int            rot   = 47;
     size_t               size  = strlen(key);
@@ -575,7 +575,7 @@ static GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key,
 }
 
 #else
-static GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
+GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
     const uint32_t       mix   = 0x5BD1E995;
     const uint32_t       rot   = 24;
     size_t               size  = strlen(key);