Mercurial > dovecot > original-hg > dovecot-1.2
changeset 1685:54a6dd88aedd HEAD
Removed the NBO32_BIT* stuff. They don't work well with enums which are
signed integers..
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 18 Aug 2003 06:21:23 +0300 |
parents | 8ae128679e05 |
children | 68258de0a00f |
files | src/lib/byteorder.c src/lib/byteorder.h |
diffstat | 2 files changed, 19 insertions(+), 114 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/byteorder.c Mon Aug 18 06:20:27 2003 +0300 +++ b/src/lib/byteorder.c Mon Aug 18 06:21:23 2003 +0300 @@ -3,48 +3,26 @@ #include "lib.h" #include "byteorder.h" -uint32_t nbo32_bitmasks[32] = { - NBO32_BIT0, NBO32_BIT1, NBO32_BIT2, NBO32_BIT3, - NBO32_BIT4, NBO32_BIT5, NBO32_BIT6, NBO32_BIT7, - NBO32_BIT8, NBO32_BIT9, NBO32_BIT10, NBO32_BIT11, - NBO32_BIT12, NBO32_BIT13, NBO32_BIT14, NBO32_BIT15, - NBO32_BIT16, NBO32_BIT17, NBO32_BIT18, NBO32_BIT19, - NBO32_BIT20, NBO32_BIT21, NBO32_BIT22, NBO32_BIT23, - NBO32_BIT24, NBO32_BIT25, NBO32_BIT26, NBO32_BIT27, - NBO32_BIT28, NBO32_BIT29, NBO32_BIT30, NBO32_BIT31 -}; - #ifndef WORDS_BIGENDIAN -void nbo_to_host(void *data, size_t size) -{ - if (size == sizeof(uint32_t)) { - uint32_t *num = (uint32_t *) data; +#define swap64(num) \ + (((num & 0x00000000000000ffULL) << 56) | \ + ((num & 0x000000000000ff00ULL) << 40) | \ + ((num & 0x0000000000ff0000ULL) << 24) | \ + ((num & 0x00000000ff000000ULL) << 8) | \ + ((num & 0x000000ff00000000ULL) >> 8) | \ + ((num & 0x0000ff0000000000ULL) >> 24) | \ + ((num & 0x00ff000000000000ULL) >> 40) | \ + ((num & 0xff00000000000000ULL) >> 56)) - *num = ntohl(*num); - } else if (size == sizeof(uint32_t)*2) { - uint32_t *num = (uint32_t *) data; - uint32_t temp; - temp = ntohl(num[0]); - num[0] = ntohl(num[1]); - num[1] = temp; - } +uint64_t nbo_to_uint64(uint64_t num) +{ + return swap64(num); } -void host_to_nbo(void *data, size_t size) +uint64_t uint64_to_nbo(uint64_t num) { - if (size == sizeof(uint32_t)) { - uint32_t *num = (uint32_t *) data; - - *num = htonl(*num); - } else if (size == sizeof(uint32_t)*2) { - uint32_t *num = (uint32_t *) data; - uint32_t temp; - - temp = htonl(num[0]); - num[0] = htonl(num[1]); - num[1] = temp; - } + return swap64(num); } #endif
--- a/src/lib/byteorder.h Mon Aug 18 06:20:27 2003 +0300 +++ b/src/lib/byteorder.h Mon Aug 18 06:21:23 2003 +0300 @@ -2,92 +2,19 @@ #define __BYTEORDER_H #ifdef WORDS_BIGENDIAN - -/* Bits in network byte order */ -# define NBO32_BIT0 0x00000001 -# define NBO32_BIT1 0x00000002 -# define NBO32_BIT2 0x00000004 -# define NBO32_BIT3 0x00000008 -# define NBO32_BIT4 0x00000010 -# define NBO32_BIT5 0x00000020 -# define NBO32_BIT6 0x00000040 -# define NBO32_BIT7 0x00000080 -# define NBO32_BIT8 0x00000100 -# define NBO32_BIT9 0x00000200 -# define NBO32_BIT10 0x00000400 -# define NBO32_BIT11 0x00000800 -# define NBO32_BIT12 0x00001000 -# define NBO32_BIT13 0x00002000 -# define NBO32_BIT14 0x00004000 -# define NBO32_BIT15 0x00008000 -# define NBO32_BIT16 0x00010000 -# define NBO32_BIT17 0x00020000 -# define NBO32_BIT18 0x00040000 -# define NBO32_BIT19 0x00080000 -# define NBO32_BIT20 0x00100000 -# define NBO32_BIT21 0x00200000 -# define NBO32_BIT22 0x00400000 -# define NBO32_BIT23 0x00800000 -# define NBO32_BIT24 0x01000000 -# define NBO32_BIT25 0x02000000 -# define NBO32_BIT26 0x04000000 -# define NBO32_BIT27 0x08000000 -# define NBO32_BIT28 0x10000000 -# define NBO32_BIT29 0x20000000 -# define NBO32_BIT30 0x40000000 -# define NBO32_BIT31 0x80000000 - -# define nbo_to_host(data, size) -# define host_to_nbo(data, size) # define nbo_to_uint32(num) (num) # define uint32_to_nbo(num) (num) +# define nbo_to_uint64(num) (num) +# define uint64_to_nbo(num) (num) #else -/* We support only big endian and little endian. AFAIK PDP-endian is the - only third used one but I don't think I need PDP-support for now :) */ #include <arpa/inet.h> -/* Bits in network byte order */ -# define NBO32_BIT0 0x01000000 -# define NBO32_BIT1 0x02000000 -# define NBO32_BIT2 0x04000000 -# define NBO32_BIT3 0x08000000 -# define NBO32_BIT4 0x10000000 -# define NBO32_BIT5 0x20000000 -# define NBO32_BIT6 0x40000000 -# define NBO32_BIT7 0x80000000 -# define NBO32_BIT8 0x00010000 -# define NBO32_BIT9 0x00020000 -# define NBO32_BIT10 0x00040000 -# define NBO32_BIT11 0x00080000 -# define NBO32_BIT12 0x00100000 -# define NBO32_BIT13 0x00200000 -# define NBO32_BIT14 0x00400000 -# define NBO32_BIT15 0x00800000 -# define NBO32_BIT16 0x00000100 -# define NBO32_BIT17 0x00000200 -# define NBO32_BIT18 0x00000400 -# define NBO32_BIT19 0x00000800 -# define NBO32_BIT20 0x00001000 -# define NBO32_BIT21 0x00002000 -# define NBO32_BIT22 0x00004000 -# define NBO32_BIT23 0x00008000 -# define NBO32_BIT24 0x00000001 -# define NBO32_BIT25 0x00000002 -# define NBO32_BIT26 0x00000004 -# define NBO32_BIT27 0x00000008 -# define NBO32_BIT28 0x00000010 -# define NBO32_BIT29 0x00000020 -# define NBO32_BIT30 0x00000040 -# define NBO32_BIT31 0x00000080 - -void nbo_to_host(void *data, size_t size); -void host_to_nbo(void *data, size_t size); - # define nbo_to_uint32(num) ntohl(num) # define uint32_to_nbo(num) htonl(num) + +uint64_t nbo_to_uint64(uint64_t num); +uint64_t uint64_to_nbo(uint64_t num); #endif -extern uint32_t nbo32_bitmasks[32]; - #endif