mirror of https://github.com/getdnsapi/getdns.git
Revise recent lookup3.c update to restore building on Windows.
As we're now building with CMake, and CMake can supply endianness, just insist on using that.
This commit is contained in:
parent
fe79e7e633
commit
f9c3a359ed
|
@ -53,21 +53,18 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy.
|
||||||
#include "util/storage/lookup3.h"
|
#include "util/storage/lookup3.h"
|
||||||
#include <stdio.h> /* defines printf for tests */
|
#include <stdio.h> /* defines printf for tests */
|
||||||
#include <time.h> /* defines time_t for timings in the test */
|
#include <time.h> /* defines time_t for timings in the test */
|
||||||
/*#include <stdint.h> defines uint32_t etc (from config.h) */
|
|
||||||
#include <sys/param.h> /* attempt to define endianness */
|
#if defined(HAVE_TARGET_ENDIANNESS)
|
||||||
#ifdef HAVE_SYS_TYPES_H
|
# if defined(TARGET_IS_BIG_ENDIAN)
|
||||||
# include <sys/types.h> /* attempt to define endianness (solaris) */
|
# define HASH_LITTLE_ENDIAN 0
|
||||||
#endif
|
# define HASH_BIG_ENDIAN 1
|
||||||
#if defined(linux) || defined(__OpenBSD__)
|
|
||||||
# ifdef HAVE_ENDIAN_H
|
|
||||||
# include <endian.h> /* attempt to define endianness */
|
|
||||||
# else
|
# else
|
||||||
# include <machine/endian.h> /* on older OpenBSD */
|
# define HASH_LITTLE_ENDIAN 1
|
||||||
|
# define HASH_BIG_ENDIAN 0
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#else
|
||||||
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
|
# error "Target endianness required."
|
||||||
#include <sys/endian.h> /* attempt to define endianness */
|
#endif /* defined(HAVE_TARGET_ENDIANNESS) */
|
||||||
#endif
|
|
||||||
|
|
||||||
/* random initial value */
|
/* random initial value */
|
||||||
static uint32_t raninit = (uint32_t)0xdeadbeef;
|
static uint32_t raninit = (uint32_t)0xdeadbeef;
|
||||||
|
@ -78,36 +75,6 @@ hash_set_raninit(uint32_t v)
|
||||||
raninit = v;
|
raninit = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* My best guess at if you are big-endian or little-endian. This may
|
|
||||||
* need adjustment.
|
|
||||||
*/
|
|
||||||
#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
|
|
||||||
__BYTE_ORDER == __LITTLE_ENDIAN) || \
|
|
||||||
(defined(i386) || defined(__i386__) || defined(__i486__) || \
|
|
||||||
defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL) || defined(__x86))
|
|
||||||
# define HASH_LITTLE_ENDIAN 1
|
|
||||||
# define HASH_BIG_ENDIAN 0
|
|
||||||
#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
|
|
||||||
__BYTE_ORDER == __BIG_ENDIAN) || \
|
|
||||||
(defined(sparc) || defined(__sparc) || defined(__sparc__) || defined(POWERPC) || defined(mc68000) || defined(sel))
|
|
||||||
# define HASH_LITTLE_ENDIAN 0
|
|
||||||
# define HASH_BIG_ENDIAN 1
|
|
||||||
#elif defined(_MACHINE_ENDIAN_H_)
|
|
||||||
/* test for machine_endian_h protects failure if some are empty strings */
|
|
||||||
# if defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && _BYTE_ORDER == _BIG_ENDIAN
|
|
||||||
# define HASH_LITTLE_ENDIAN 0
|
|
||||||
# define HASH_BIG_ENDIAN 1
|
|
||||||
# endif
|
|
||||||
# if defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && _BYTE_ORDER == _LITTLE_ENDIAN
|
|
||||||
# define HASH_LITTLE_ENDIAN 1
|
|
||||||
# define HASH_BIG_ENDIAN 0
|
|
||||||
# endif /* _MACHINE_ENDIAN_H_ */
|
|
||||||
#else
|
|
||||||
# define HASH_LITTLE_ENDIAN 0
|
|
||||||
# define HASH_BIG_ENDIAN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define hashsize(n) ((uint32_t)1<<(n))
|
#define hashsize(n) ((uint32_t)1<<(n))
|
||||||
#define hashmask(n) (hashsize(n)-1)
|
#define hashmask(n) (hashsize(n)-1)
|
||||||
#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
|
#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
|
||||||
|
|
Loading…
Reference in New Issue