Browse Source

hash: use config.h settings for endian.

Leave old hacky #ifdef tests there for reference.
Rusty Russell 15 years ago
parent
commit
97648992fd
2 changed files with 14 additions and 3 deletions
  1. 13 2
      ccan/hash/hash.c
  2. 1 1
      ccan/hash/hash.h

+ 13 - 2
ccan/hash/hash.c

@@ -40,9 +40,7 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy.
 #include <time.h>       /* defines time_t for timings in the test */
 #include <stdint.h>     /* defines uint32_t etc */
 #include <sys/param.h>  /* attempt to define endianness */
-#endif
 
-#include "hash.h"
 #ifdef linux
 # include <endian.h>    /* attempt to define endianness */
 #endif
@@ -66,6 +64,19 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy.
 #else
 # error Unknown endian
 #endif
+#endif /* old hash.c headers. */
+
+#include "hash.h"
+
+#if HAVE_LITTLE_ENDIAN
+#define HASH_LITTLE_ENDIAN 1
+#define HASH_BIG_ENDIAN 0
+#elif HAVE_BIG_ENDIAN
+#define HASH_LITTLE_ENDIAN 0
+#define HASH_BIG_ENDIAN 1
+#else
+#error Unknown endian
+#endif
 
 #define hashsize(n) ((uint32_t)1<<(n))
 #define hashmask(n) (hashsize(n)-1)

+ 1 - 1
ccan/hash/hash.h

@@ -1,8 +1,8 @@
 #ifndef CCAN_HASH_H
 #define CCAN_HASH_H
+#include "config.h"
 #include <stdint.h>
 #include <stdlib.h>
-#include "config.h"
 #include <ccan/build_assert/build_assert.h>
 
 /* Stolen mostly from: lookup3.c, by Bob Jenkins, May 2006, Public Domain.