git.annexia.org
/
portablexdr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix endianness test for Windows.
[portablexdr.git]
/
byteswap.h
diff --git
a/byteswap.h
b/byteswap.h
index
3509acf
..
991e85b
100644
(file)
--- a/
byteswap.h
+++ b/
byteswap.h
@@
-20,6
+20,10
@@
#ifndef _PORTABLEXDR_BYTESWAP_H
#define _PORTABLEXDR_BYTESWAP_H 1
#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))
/* 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;
{
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
#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 "What kind of system is this?"
#endif
+#else
+#error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined"
+#endif
}
#define ntohl htonl
}
#define ntohl htonl
@@
-147,6
+155,7
@@
static inline uint16_t
htons (x)
uint16_t x;
{
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
#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 "What kind of system is this?"
#endif
+#else
+#error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined"
+#endif
}
#define ntohs htons
}
#define ntohs htons