From 384ff6473455da1a24b5037b358591f44f3bbf57 Mon Sep 17 00:00:00 2001 From: Bernhard Nortmann Date: Mon, 28 Nov 2016 19:14:35 +0100 Subject: [PATCH] portable_endian.h: A more uniform fix for the various BSD flavours See pull requests #59 and #83. It looks like various BSD derivates have adopted the more common naming conventions for the endian conversion macros, which means that we would attempt to redefine them without need (potentially even to 'historic' names that no longer exist). Try to avoid this by properly checking for existing functions first. Signed-off-by: Bernhard Nortmann --- include/portable_endian.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/include/portable_endian.h b/include/portable_endian.h index f6b70f0..3f1d532 100644 --- a/include/portable_endian.h +++ b/include/portable_endian.h @@ -41,22 +41,29 @@ # define __LITTLE_ENDIAN LITTLE_ENDIAN # define __PDP_ENDIAN PDP_ENDIAN -#elif defined(__OpenBSD__) || defined(__FreeBSD__) - -# include - -#elif defined(__NetBSD__) || defined(__DragonFly__) +#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) # include +/* For functions still missing, try to substitute 'historic' OpenBSD names */ +#ifndef be16toh # define be16toh(x) betoh16(x) +#endif +#ifndef le16toh # define le16toh(x) letoh16(x) - +#endif +#ifndef be32toh # define be32toh(x) betoh32(x) +#endif +#ifndef le32toh # define le32toh(x) letoh32(x) - +#endif +#ifndef be64toh # define be64toh(x) betoh64(x) +#endif +#ifndef le64toh # define le64toh(x) letoh64(x) +#endif #elif defined(__WINDOWS__)