diff --git a/include/compat/endian.h b/include/compat/endian.h index 6dfe0b0..ca3465d 100644 --- a/include/compat/endian.h +++ b/include/compat/endian.h @@ -62,11 +62,20 @@ #if defined(_WIN32) && !defined(HAVE_ENDIAN_H) #include + #define betoh16(x) ntohs((x)) #define htobe16(x) htons((x)) #define betoh32(x) ntohl((x)) #define htobe32(x) ntohl((x)) #define betoh64(x) ntohll((x)) + +#if !defined(ntohll) +#define ntohll(x) ((1==htonl(1)) ? (x) : ((uint64_t)ntohl((x) & 0xFFFFFFFF) << 32) | ntohl((x) >> 32)) +#endif +#if !defined(htonll) +#define htonll(x) ((1==ntohl(1)) ? (x) : ((uint64_t)htonl((x) & 0xFFFFFFFF) << 32) | htonl((x) >> 32)) +#endif + #define htobe64(x) ntohll((x)) #endif /* _WIN32 && !HAVE_ENDIAN_H */