From 7351afdd89beed0107b5d2defe4153312c3775ba Mon Sep 17 00:00:00 2001 From: German Service Network Date: Sun, 10 Sep 2023 10:33:33 +0200 Subject: [PATCH] Move the OS detection to configure.ac script to set the use of clock_realtime --- configure.ac | 17 +++++++++++++++++ src/fping.c | 11 ++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index f75efd5b..fcc0787c 100644 --- a/configure.ac +++ b/configure.ac @@ -7,6 +7,22 @@ AC_INIT([fping],[5.1]) m4_ifdef([AC_AUTOCONF_VERSION],[AC_USE_SYSTEM_EXTENSIONS], [AC_GNU_SOURCE]) +# Detect Operatingsystem +AC_CANONICAL_HOST +only_clock_realtime=no + +case "${host_os}" in + darwin*) + only_clock_realtime=yes + ;; + *freebsd*) + only_clock_realtime=yes + ;; + *openbsd*) + only_clock_realtime=yes + ;; +esac + dnl --disable-ipv4 AC_ARG_ENABLE([ipv4], AS_HELP_STRING([--disable-ipv4], [Disable support for pinging IPv4 hosts])) @@ -44,6 +60,7 @@ dnl Test if --enable-timestamp is explicitely enabled and make an error if this AS_IF([test "x$enable_timestamp" = "xyes" -a "x$have_so_timestamp" = "xno"], [ AC_MSG_ERROR([--enable-timestamp not supported on this platform]) ]) +AS_IF([test "x$only_clock_realtime" = "xyes"], [AC_DEFINE(ONLY_CLOCK_REALTIME, [1], [ONLY_CLOCK_REALTIME is defined])]) AC_ARG_ENABLE([safe-limits], AS_HELP_STRING([--enable-safe-limits], [Restrict timing parameters (-i, -p) within "safe" limits])) diff --git a/src/fping.c b/src/fping.c index e02dab51..27711c8f 100644 --- a/src/fping.c +++ b/src/fping.c @@ -116,15 +116,16 @@ extern int h_errno; /*** Constants ***/ -#if HAVE_SO_TIMESTAMPNS -#define CLOCKID CLOCK_REALTIME -#endif - /* CLOCK_MONTONIC starts under macOS, OpenBSD and FreeBSD with undefined positive point and can not be use * see github PR #217 + * The configure script detect the predefined operating systems an set CLOCK_REALTIME using over ONLY_CLOCK_REALTIME variable */ +#if HAVE_SO_TIMESTAMPNS || ONLY_CLOCK_REALTIME +#define CLOCKID CLOCK_REALTIME +#endif + #if !defined(CLOCKID) -#if defined(CLOCK_MONOTONIC) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) +#if defined(CLOCK_MONOTONIC) #define CLOCKID CLOCK_MONOTONIC #else #define CLOCKID CLOCK_REALTIME