From 67095c76f64c61a5472c0233e44520ccc4eddbc8 Mon Sep 17 00:00:00 2001 From: Guillaume Xavier Taillon Date: Mon, 22 Feb 2016 14:46:24 -0500 Subject: libbreplace: compatibility fix for AIX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds macros for preprocessor compares and replaces an incomptatible compare with one of the new macros. This fixes a comptability bug on AIX. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11621 Signed-off-by: Guillaume Xavier Taillon Reviewed-by: Björn Jacke Reviewed-by: Stefan Metzmacher Autobuild-User(master): Björn Jacke Autobuild-Date(master): Tue Jun 13 09:11:56 CEST 2017 on sn-devel-144 --- lib/replace/system/time.h | 10 +++++++++- lib/util/time.c | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/replace/system/time.h b/lib/replace/system/time.h index b6d26092890..00f0d7f99e6 100644 --- a/lib/replace/system/time.h +++ b/lib/replace/system/time.h @@ -79,13 +79,21 @@ int rep_utimes(const char *filename, const struct timeval tv[2]); typedef int clockid_t; int rep_clock_gettime(clockid_t clk_id, struct timespec *tp); #endif -/* make sure we have a best effort CUSTOM_CLOCK_MONOTONIC we can rely on */ +/* make sure we have a best effort CUSTOM_CLOCK_MONOTONIC we can rely on. + * + * on AIX the values of CLOCK_* are cast expressions, not integer constants, + * this prevents them from being compared against in a preprocessor directive. + * The following ...IS_* macros can be used to check which clock is in use. + */ #if defined(CLOCK_MONOTONIC) #define CUSTOM_CLOCK_MONOTONIC CLOCK_MONOTONIC +#define CUSTOM_CLOCK_MONOTONIC_IS_MONOTONIC #elif defined(CLOCK_HIGHRES) #define CUSTOM_CLOCK_MONOTONIC CLOCK_HIGHRES +#define CUSTOM_CLOCK_MONOTONIC_IS_HIGHRES #else #define CUSTOM_CLOCK_MONOTONIC CLOCK_REALTIME +#define CUSTOM_CLOCK_MONOTONIC_IS_REALTIME #endif #endif diff --git a/lib/util/time.c b/lib/util/time.c index 8c01627e2a1..8a4d93d4ac1 100644 --- a/lib/util/time.c +++ b/lib/util/time.c @@ -60,7 +60,7 @@ _PUBLIC_ void clock_gettime_mono(struct timespec *tp) } #endif /* then try the monotonic clock: */ -#if CUSTOM_CLOCK_MONOTONIC != CLOCK_REALTIME +#ifndef CUSTOM_CLOCK_MONOTONIC_IS_REALTIME if (clock_gettime(CUSTOM_CLOCK_MONOTONIC,tp) == 0) { return; } -- cgit v1.2.1