diff options
-rw-r--r-- | src/xz/mytime.c | 11 | ||||
-rw-r--r-- | src/xz/private.h | 3 |
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 |