summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Xavier Taillon <gtaillon@ca.ibm.com>2016-02-22 14:46:24 -0500
committerBjoern Jacke <bj@sernet.de>2017-06-13 09:11:56 +0200
commit67095c76f64c61a5472c0233e44520ccc4eddbc8 (patch)
tree31561ad03a110e4eaa53455f669f1363ef5db405
parent60a8ba4a6b028d516b39de2f55c68a6e8cbbf43f (diff)
downloadsamba-67095c76f64c61a5472c0233e44520ccc4eddbc8.tar.gz
libbreplace: compatibility fix for AIX
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 <gtaillon@ca.ibm.com> Reviewed-by: Björn Jacke <bjacke@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org> Autobuild-User(master): Björn Jacke <bj@sernet.de> Autobuild-Date(master): Tue Jun 13 09:11:56 CEST 2017 on sn-devel-144
-rw-r--r--lib/replace/system/time.h10
-rw-r--r--lib/util/time.c2
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;
}