From 90ae9076a4856e13110da56afb63228b7f8d3969 Mon Sep 17 00:00:00 2001 From: Marian Beermann Date: Sat, 21 Jan 2017 15:04:01 +0100 Subject: [PATCH 1/2] hashindex: detect mingw byte order --- borg/_hashindex.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/borg/_hashindex.c b/borg/_hashindex.c index bfa3ef09b..a86f12769 100644 --- a/borg/_hashindex.c +++ b/borg/_hashindex.c @@ -13,10 +13,12 @@ #endif #if (defined(BYTE_ORDER)&&(BYTE_ORDER == BIG_ENDIAN)) || \ + (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)) || \ (defined(_BIG_ENDIAN)&&defined(__SVR4)&&defined(__sun)) #define _le32toh(x) __builtin_bswap32(x) #define _htole32(x) __builtin_bswap32(x) #elif (defined(BYTE_ORDER)&&(BYTE_ORDER == LITTLE_ENDIAN)) || \ + (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \ (defined(_LITTLE_ENDIAN)&&defined(__SVR4)&&defined(__sun)) #define _le32toh(x) (x) #define _htole32(x) (x) From fafd5e03997713ae9bec00368522f6698034e4b1 Mon Sep 17 00:00:00 2001 From: Marian Beermann Date: Sat, 21 Jan 2017 15:04:42 +0100 Subject: [PATCH 2/2] hashindex: separate endian-dependent defs from endian detection also make macro style consistent with other macros in the codebase. --- borg/_hashindex.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/borg/_hashindex.c b/borg/_hashindex.c index a86f12769..f0e8ba939 100644 --- a/borg/_hashindex.c +++ b/borg/_hashindex.c @@ -12,20 +12,26 @@ #include #endif -#if (defined(BYTE_ORDER)&&(BYTE_ORDER == BIG_ENDIAN)) || \ +#if (defined(BYTE_ORDER) && (BYTE_ORDER == BIG_ENDIAN)) || \ (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)) || \ - (defined(_BIG_ENDIAN)&&defined(__SVR4)&&defined(__sun)) -#define _le32toh(x) __builtin_bswap32(x) -#define _htole32(x) __builtin_bswap32(x) -#elif (defined(BYTE_ORDER)&&(BYTE_ORDER == LITTLE_ENDIAN)) || \ + (defined(_BIG_ENDIAN) && defined(__SVR4)&&defined(__sun)) +#define BORG_BIG_ENDIAN 1 +#elif (defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN)) || \ (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \ - (defined(_LITTLE_ENDIAN)&&defined(__SVR4)&&defined(__sun)) -#define _le32toh(x) (x) -#define _htole32(x) (x) + (defined(_LITTLE_ENDIAN) && defined(__SVR4)&&defined(__sun)) +#define BORG_BIG_ENDIAN 0 #else #error Unknown byte order #endif +#if BORG_BIG_ENDIAN +#define _le32toh(x) __builtin_bswap32(x) +#define _htole32(x) __builtin_bswap32(x) +#else +#define _le32toh(x) (x) +#define _htole32(x) (x) +#endif + #define MAGIC "BORG_IDX" #define MAGIC_LEN 8