From a03ea378e79048ac188c8e4211ed2305e4643558 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 14 Jun 2018 13:10:25 +0000 Subject: prefer clock_gettime * configure.ac: clock_gettime or gettimeofday must exist. * process.c (rb_clock_gettime): prefer clock_gettime over gettimeofday, as the latter is obsolete in SUSv4. * random.c (fill_random_seed): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- random.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'random.c') diff --git a/random.c b/random.c index 7a3b6494d5..7165f3c4a3 100644 --- a/random.c +++ b/random.c @@ -558,15 +558,24 @@ static void fill_random_seed(uint32_t *seed, size_t cnt) { static int n = 0; +#if defined HAVE_CLOCK_GETTIME + struct timespec tv; +#elif defined HAVE_GETTIMEOFDAY struct timeval tv; +#endif size_t len = cnt * sizeof(*seed); memset(seed, 0, len); fill_random_bytes(seed, len, FALSE); +#if defined HAVE_CLOCK_GETTIME + clock_gettime(CLOCK_REALTIME, &tv); + seed[0] ^= tv.tv_nsec; +#elif defined HAVE_GETTIMEOFDAY gettimeofday(&tv, 0); seed[0] ^= tv.tv_usec; +#endif seed[1] ^= (uint32_t)tv.tv_sec; #if SIZEOF_TIME_T > SIZEOF_INT seed[0] ^= (uint32_t)((time_t)tv.tv_sec >> SIZEOF_INT * CHAR_BIT); -- cgit v1.2.3