diff options
author | Patrick Steinhardt <ps@pks.im> | 2020-02-21 11:26:19 +0100 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2020-02-24 21:46:41 +0100 |
commit | 3828ea67b97fc56dead976f319792ead3aa7e623 (patch) | |
tree | b24189f1405aff6edbfc7ecc43eef53da408091d | |
parent | 172239021f7ba04fe7327647b213799853a9eb89 (diff) | |
download | libgit2-3828ea67b97fc56dead976f319792ead3aa7e623.tar.gz |
deps: ntlmclient: fix missing htonll symbols on FreeBSD and SunOS
The ntlmclient dependency defines htonll on Linux-based systems, only.
As a result, non-Linux systems will run into compiler and/or linker
errors due to undefined symbols.
Fix this issue for FreeBSD, OpenBSD and SunOS/OpenSolaris by including
the proper headers and defining the symbol accordingly.
-rw-r--r-- | deps/ntlmclient/compat.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/deps/ntlmclient/compat.h b/deps/ntlmclient/compat.h index efdf34514..43bc86564 100644 --- a/deps/ntlmclient/compat.h +++ b/deps/ntlmclient/compat.h @@ -22,8 +22,30 @@ #endif #ifdef __linux__ +/* See man page endian(3) */ # include <endian.h> # define htonll htobe64 +#elif defined(__OpenBSD__) +/* See man page htobe64(3) */ +# include <endian.h> +# define htonll htobe64 +#elif defined(__FreeBSD__) +/* See man page bwaps64(9) */ +# include <sys/endian.h> +# define htonll bswap64 +#elif defined(sun) || defined(__sun) +/* See man page byteorder(3SOCKET) */ +# include <sys/types.h> +# include <netinet/in.h> +# include <inttypes.h> + +# if !defined(htonll) +# if defined(_BIG_ENDIAN) +# define htonll(x) (x) +# else +# define htonll(x) ((((uint64_t)htonl(x)) << 32) + htonl((uint64_t)(x) >> 32)) +# endif +# endif #endif #ifndef MIN |