From 5d2f4b1611d724a3dbf0d4b8629119cf1ad11e87 Mon Sep 17 00:00:00 2001 From: Omar Polo Date: Sun, 2 Jul 2023 09:14:44 +0000 Subject: [PATCH] add compat for endian (now required by imsg) --- configure | 30 ++++++++++++++++++++++++++++++ have/endian_h.c | 27 +++++++++++++++++++++++++++ have/machine_endian.c | 28 ++++++++++++++++++++++++++++ have/sys_endian_h.c | 27 +++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 have/endian_h.c create mode 100644 have/machine_endian.c create mode 100644 have/sys_endian_h.c diff --git a/configure b/configure index 43153f4..83332f9 100755 --- a/configure +++ b/configure @@ -244,6 +244,22 @@ if ! runtest wait_any WAIT_ANY; then CFLAGS="${CFLAGS} -DWAIT_ANY=-1" fi +HAVE_ENDIAN_H=0 +HAVE_SYS_ENDIAN_H=0 +HAVE_MACHINE_ENDIAN=0 + +runtest endian_h ENDIAN_H || \ +runtest sys_endian_h SYS_ENDIAN_H || \ +runtest machine_endian MACHINE_ENDIAN || true + +if [ ${HAVE_ENDIAN_H} -eq 0 -a \ + ${HAVE_SYS_ENDIAN_H} -eq 0 -a \ + ${HAVE_MACHINE_ENDIAN} -eq 0 ]; then + echo "FATAL: no endian header found" 1>&2 + echo "FATAL: no endian header found" 1>&3 + exit 1 +fi + runtest err ERR || true runtest explicit_bzero EXPLICIT_BZERO || true runtest freezero FREEZERO || true @@ -349,6 +365,20 @@ cat <<__HEREDOC__ __HEREDOC__ +if [ ${HAVE_ENDIAN_H} -eq 1 ]; then + echo "#include " +elif [ ${HAVE_SYS_ENDIAN_H} -eq 1 ]; then + echo "#include " +elif [ ${HAVE_MACHINE_ENDIAN} -eq 1 ]; then + cat <<__HEREDOC__ +#include +#include +#define htobe16(x) OSSwapHostToBigInt16(x) +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htobe64(x) OSSwapHostToBigInt64(x) +__HEREDOC__ +fi + [ ${HAVE_EXPLICIT_BZERO} -eq 0 -o \ ${HAVE_FREEZERO} -eq 0 -o \ ${HAVE_REALLOCARRAY} -eq 0 -o \ diff --git a/have/endian_h.c b/have/endian_h.c new file mode 100644 index 0000000..3bbff60 --- /dev/null +++ b/have/endian_h.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Omar Polo + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +int +main(void) +{ + uint16_t x; + + x = 42; + return (htobe16(x)); +} diff --git a/have/machine_endian.c b/have/machine_endian.c new file mode 100644 index 0000000..2413b58 --- /dev/null +++ b/have/machine_endian.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Omar Polo + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +int +main(void) +{ + uint16_t x; + + x = 42; + return (OSSwapHostToBigInt16(x)); +} diff --git a/have/sys_endian_h.c b/have/sys_endian_h.c new file mode 100644 index 0000000..bba56c9 --- /dev/null +++ b/have/sys_endian_h.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Omar Polo + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +int +main(void) +{ + uint16_t x; + + x = 42; + return (htobe16(x)); +}