X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgettime.c;h=715d1916a3d0ddd8081cefe604488e1db51f4449;hb=709c1f1fb17a388b106f6305a952da3ba802218e;hp=7b5a75aaf69185d48d56c8abd631c0ac155f16d0;hpb=51907d763eb8f5ecad76c0bc88dabf7e0e528b6b;p=gnulib.git diff --git a/lib/gettime.c b/lib/gettime.c index 7b5a75aaf..715d1916a 100644 --- a/lib/gettime.c +++ b/lib/gettime.c @@ -1,5 +1,5 @@ /* gettime -- get the system clock - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,19 +28,32 @@ int gettime (struct timespec *ts) { -#if defined CLOCK_REALTIME && HAVE_CLOCK_SETTIME +#if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME if (clock_gettime (CLOCK_REALTIME, ts) == 0) return 0; #endif +#if HAVE_GETTIMEOFDAY { struct timeval tv; - int r = gettimeofday (&tv, 0); - if (r == 0) + if (gettimeofday (&tv, 0) == 0) { ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; + return 0; } - return r; } +#endif + + { + time_t t = time (0); + if (t != (time_t) -1) + { + ts->tv_sec = t; + ts->tv_nsec = 0; + return 0; + } + } + + return -1; }