Fix endianness test for Windows.
authorrjones <rjones>
Wed, 15 Oct 2008 10:05:18 +0000 (10:05 +0000)
committerrjones <rjones>
Wed, 15 Oct 2008 10:05:18 +0000 (10:05 +0000)
byteswap.h
configure.ac

index 3509acf..991e85b 100644 (file)
 #ifndef _PORTABLEXDR_BYTESWAP_H
 #define _PORTABLEXDR_BYTESWAP_H 1
 
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
 /* Swap bytes in 16 bit value.  */
 #define __bswap_constant_16(x) \
      ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
@@ -107,6 +111,7 @@ static inline uint32_t
 htonl (x)
      uint32_t x;
 {
+#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN)
 #if BYTE_ORDER == BIG_ENDIAN
   return x;
 #elif BYTE_ORDER == LITTLE_ENDIAN
@@ -114,6 +119,9 @@ htonl (x)
 #else
 # error "What kind of system is this?"
 #endif
+#else
+#error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined"
+#endif
 }
 
 #define ntohl htonl
@@ -147,6 +155,7 @@ static inline uint16_t
 htons (x)
      uint16_t x;
 {
+#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN)
 #if BYTE_ORDER == BIG_ENDIAN
   return x;
 #elif BYTE_ORDER == LITTLE_ENDIAN
@@ -154,6 +163,9 @@ htons (x)
 #else
 # error "What kind of system is this?"
 #endif
+#else
+#error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined"
+#endif
 }
 
 #define ntohs htons
index 7b455cd..30bec5e 100644 (file)
@@ -1,4 +1,4 @@
-AC_INIT(portablexdr, 4.0.10)
+AC_INIT(portablexdr, 4.0.11)
 AM_INIT_AUTOMAKE
 
 AC_CONFIG_HEADERS([config.h])
@@ -17,7 +17,7 @@ case "$host" in
 esac
 AC_SUBST(MINGW_EXTRA_LDFLAGS)
 
-AC_CHECK_HEADERS([arpa/inet.h])
+AC_CHECK_HEADERS([arpa/inet.h sys/param.h])
 AC_CHECK_FUNCS([ntohl htonl ntohs htons])
 
 AC_OUTPUT(Makefile)