diff --git a/src/ltc/prngs/fortuna.c b/src/ltc/prngs/fortuna.c index b545617..400c732 100644 --- a/src/ltc/prngs/fortuna.c +++ b/src/ltc/prngs/fortuna.c @@ -72,11 +72,7 @@ static ulong64 _fortuna_current_time(void) { ulong64 cur_time; -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - cur_time = (ulong64)(ts.tv_sec) * 1000000 + (ulong64)(ts.tv_nsec) / 1000; /* get microseconds */ -#elif defined(_WIN32) +#if defined(_WIN32) FILETIME CurrentTime; ULARGE_INTEGER ul; GetSystemTimeAsFileTime(&CurrentTime); @@ -85,6 +81,14 @@ cur_time = ul.QuadPart; /* now we have 100ns intervals since 1 January 1601 */ cur_time -= CONST64(116444736000000000); /* subtract 100ns intervals between 1601-1970 */ cur_time /= 10; /* 100ns intervals > microseconds */ +#elif defined(LTC_CLOCK_GETTIME) + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + cur_time = (ulong64)(ts.tv_sec) * 1000000 + (ulong64)(ts.tv_nsec) / 1000; /* get microseconds */ +#else + struct timeval tv; + gettimeofday(&tv, NULL); + cur_time = (ulong64)(tv.tv_sec) * 1000000 + (ulong64)(tv.tv_usec); /* get microseconds */ #endif return cur_time / 100; }