diff options
| -rw-r--r-- | src/network/htonl.c | 8 | ||||
| -rw-r--r-- | src/network/htons.c | 8 | ||||
| -rw-r--r-- | src/network/ntohl.c | 8 | ||||
| -rw-r--r-- | src/network/ntohs.c | 8 | 
4 files changed, 12 insertions, 20 deletions
| diff --git a/src/network/htonl.c b/src/network/htonl.c index b21dace0..6622d16c 100644 --- a/src/network/htonl.c +++ b/src/network/htonl.c @@ -1,10 +1,8 @@  #include <netinet/in.h> +#include <byteswap.h>  uint32_t htonl(uint32_t n)  { -	union { -		uint8_t b[4]; -		uint32_t i; -	} u = { { n>>24, n>>16, n>>8, n } }; -	return u.i; +	union { int i; char c; } u = { 1 }; +	return u.c ? bswap_32(n) : n;  } diff --git a/src/network/htons.c b/src/network/htons.c index 522504a5..03a3a1d5 100644 --- a/src/network/htons.c +++ b/src/network/htons.c @@ -1,10 +1,8 @@  #include <netinet/in.h> +#include <byteswap.h>  uint16_t htons(uint16_t n)  { -	union { -		uint8_t b[2]; -		uint16_t s; -	} u = { { n>>8, n } }; -	return u.s; +	union { int i; char c; } u = { 1 }; +	return u.c ? bswap_16(n) : n;  } diff --git a/src/network/ntohl.c b/src/network/ntohl.c index 64379196..d6fce459 100644 --- a/src/network/ntohl.c +++ b/src/network/ntohl.c @@ -1,10 +1,8 @@  #include <netinet/in.h> +#include <byteswap.h>  uint32_t ntohl(uint32_t n)  { -	union { -		uint32_t i; -		uint8_t b[4]; -	} u = { n }; -	return (u.b[0]<<24) | (u.b[1]<<16) | (u.b[2]<<8) | u.b[3]; +	union { int i; char c; } u = { 1 }; +	return u.c ? bswap_32(n) : n;  } diff --git a/src/network/ntohs.c b/src/network/ntohs.c index 3544a479..745cef42 100644 --- a/src/network/ntohs.c +++ b/src/network/ntohs.c @@ -1,10 +1,8 @@  #include <netinet/in.h> +#include <byteswap.h>  uint16_t ntohs(uint16_t n)  { -	union { -		uint16_t s; -		uint8_t b[2]; -	} u = { n }; -	return (u.b[0]<<8) | u.b[1]; +	union { int i; char c; } u = { 1 }; +	return u.c ? bswap_16(n) : n;  } | 
