X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fendianness.h;h=cba645bf30554359eab58152b2f9f14150c13b80;hb=a73db0665d3154b413e1ba16dd15008abc4b46fa;hp=e5f8009c08dbfb76f4e90738a3c66ea206ff1594;hpb=2a36f3ccb3773c33f0be7e8bc1e9e552ecf9fae0;p=wimlib diff --git a/src/endianness.h b/src/endianness.h index e5f8009c..cba645bf 100644 --- a/src/endianness.h +++ b/src/endianness.h @@ -5,14 +5,14 @@ #include "config.h" #include -#ifdef WORDS_BIGENDIAN +/* Watch out for conflicts with ntfs-3g headers... */ #ifndef bswap16 static inline uint16_t bswap16(uint16_t n) { return (n << 8) | (n >> 8); } -#endif +#endif /* ifndef bswap16 */ #ifndef bswap32 static inline uint32_t bswap32(uint32_t n) @@ -24,8 +24,7 @@ static inline uint32_t bswap32(uint32_t n) (n >> 24); #endif } -#endif - +#endif /* ifndef bswap32 */ #ifndef bswap64 static inline uint64_t bswap64(uint64_t n) @@ -39,65 +38,49 @@ static inline uint64_t bswap64(uint64_t n) ((n & 0xff000000000000) >> 40) | (n >> 56); #endif } -#endif +#endif /* ifndef bswap64 */ -/* Not in place */ -#define to_le16(n) bswap16(n) -#define to_le32(n) bswap32(n) -#define to_le64(n) bswap64(n) #ifndef _NTFS_ENDIANS_H -#define le16_to_cpu(n) bswap16(n) -#define le32_to_cpu(n) bswap32(n) -#define le64_to_cpu(n) bswap64(n) +# ifdef WORDS_BIGENDIAN +# define le16_to_cpu(n) bswap16(n) +# define le32_to_cpu(n) bswap32(n) +# define le64_to_cpu(n) bswap64(n) +# define cpu_to_le16(n) bswap16(n) +# define cpu_to_le32(n) bswap32(n) +# define cpu_to_le64(n) bswap64(n) +# else +# define cpu_to_le16(n) (n) +# define cpu_to_le32(n) (n) +# define cpu_to_le64(n) (n) +# define le16_to_cpu(n) (n) +# define le32_to_cpu(n) (n) +# define le64_to_cpu(n) (n) +# endif #endif -/* In place */ -#define TO_LE16(n) ((n) = to_le16(n)) -#define TO_LE32(n) ((n) = to_le32(n)) -#define TO_LE64(n) ((n) = to_le64(n)) - -static inline void array_to_le16(uint16_t *p, uint64_t n) +static inline void array_cpu_to_le32(uint32_t *p, uint64_t n) { while (n--) - *p++ = to_le16(*p); + *p++ = cpu_to_le32(*p); } -static inline void array_to_le32(uint32_t *p, uint64_t n) + +static inline void array_le32_to_cpu(uint32_t *p, uint64_t n) { while (n--) - *p++ = to_le32(*p); + *p++ = le32_to_cpu(*p); } -static inline void array_to_le64(uint64_t *p, uint64_t n) + +static inline void array_cpu_to_le64(uint64_t *p, uint64_t n) { while (n--) - *p++ = to_le64(*p); + *p++ = cpu_to_le64(*p); } -#else - -/* Little endian. */ - -/* Not in place */ -#define to_le16(n) (n) -#define to_le32(n) (n) -#define to_le64(n) (n) - -#ifndef _NTFS_ENDIANS_H -#define le16_to_cpu(n) (n) -#define le32_to_cpu(n) (n) -#define le64_to_cpu(n) (n) -#endif - -/* In place */ -#define TO_LE16(n) -#define TO_LE32(n) -#define TO_LE64(n) - -#define array_to_le16(p, n) -#define array_to_le32(p, n) -#define array_to_le64(p, n) - -#endif - +static inline void array_le64_to_cpu(uint64_t *p, uint64_t n) +{ + while (n--) + *p++ = le64_to_cpu(*p); +} #endif /* _WIMLIB_ENDIANNESS_H */