Merge branch 'cb/byte-order' into maint

* cb/byte-order:
  compat/bswap.h: fix endianness detection
  compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
  compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER
This commit is contained in:
Junio C Hamano 2014-07-22 10:25:02 -07:00
Родитель 85dd37941a 9c65ee15ee
Коммит 1fbc6e6e60
1 изменённых файлов: 25 добавлений и 10 удалений

Просмотреть файл

@ -101,19 +101,34 @@ static inline uint64_t git_bswap64(uint64_t x)
#undef ntohll #undef ntohll
#undef htonll #undef htonll
#if !defined(__BYTE_ORDER) #if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && defined(__BIG_ENDIAN)
# if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
# define __BYTE_ORDER BYTE_ORDER # define GIT_BYTE_ORDER __BYTE_ORDER
# define __LITTLE_ENDIAN LITTLE_ENDIAN # define GIT_LITTLE_ENDIAN __LITTLE_ENDIAN
# define __BIG_ENDIAN BIG_ENDIAN # define GIT_BIG_ENDIAN __BIG_ENDIAN
#elif defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
# define GIT_BYTE_ORDER BYTE_ORDER
# define GIT_LITTLE_ENDIAN LITTLE_ENDIAN
# define GIT_BIG_ENDIAN BIG_ENDIAN
#else
# define GIT_BIG_ENDIAN 4321
# define GIT_LITTLE_ENDIAN 1234
# if defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
# define GIT_BYTE_ORDER GIT_BIG_ENDIAN
# elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
# define GIT_BYTE_ORDER GIT_LITTLE_ENDIAN
# else
# error "Cannot determine endianness"
# endif # endif
#endif #endif
#if !defined(__BYTE_ORDER) #if GIT_BYTE_ORDER == GIT_BIG_ENDIAN
# error "Cannot determine endianness"
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
# define ntohll(n) (n) # define ntohll(n) (n)
# define htonll(n) (n) # define htonll(n) (n)
#else #else