aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xz/mytime.c11
-rw-r--r--src/xz/private.h3
2 files changed, 9 insertions, 5 deletions
diff --git a/src/xz/mytime.c b/src/xz/mytime.c
index 0b0e2be7..8d5e994f 100644
--- a/src/xz/mytime.c
+++ b/src/xz/mytime.c
@@ -12,7 +12,7 @@
#include "private.h"
-#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
+#ifdef HAVE_CLOCK_GETTIME
# include <time.h>
#else
# include <sys/time.h>
@@ -35,14 +35,19 @@ static uint64_t next_flush;
static uint64_t
mytime_now(void)
{
-#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
+#ifdef HAVE_CLOCK_GETTIME
+ struct timespec tv;
+
+# ifdef HAVE_CLOCK_MONOTONIC
// If CLOCK_MONOTONIC was available at compile time but for some
// reason isn't at runtime, fallback to CLOCK_REALTIME which
// according to POSIX is mandatory for all implementations.
static clockid_t clk_id = CLOCK_MONOTONIC;
- struct timespec tv;
while (clock_gettime(clk_id, &tv))
clk_id = CLOCK_REALTIME;
+# else
+ clock_gettime(CLOCK_REALTIME, &tv);
+# endif
return (uint64_t)tv.tv_sec * 1000 + (uint64_t)(tv.tv_nsec / 1000000);
#else
diff --git a/src/xz/private.h b/src/xz/private.h
index a20dbc57..8a2db9ff 100644
--- a/src/xz/private.h
+++ b/src/xz/private.h
@@ -56,8 +56,7 @@
// polls the time and the SIGTSTP handling adds slight overhead to
// that code. Most (all?) systems that have SIGTSTP also have SIGALRM
// so this requirement won't exclude many systems.
-#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC) \
- && defined(SIGTSTP) && defined(SIGALRM)
+#if defined(HAVE_CLOCK_GETTIME) && defined(SIGTSTP) && defined(SIGALRM)
# define USE_SIGTSTP_HANDLER 1
#endif