diff options
author | Jim Meyering <jim@meyering.net> | 2003-06-08 17:37:48 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2003-06-08 17:37:48 +0000 |
commit | 60f6a7d72f1e479da8d51796f5941c0e80c45878 (patch) | |
tree | cd753fbab921b5bf4f2b9830960582b4d3f108fc | |
parent | a647c23ca256a3f597224a30261779d410cec5f9 (diff) | |
download | coreutils-60f6a7d72f1e479da8d51796f5941c0e80c45878.tar.xz |
Also undef tzset.
(rpl_tzset): New function.
-rw-r--r-- | lib/gettimeofday.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c index 0d259be1c..909e6eb25 100644 --- a/lib/gettimeofday.c +++ b/lib/gettimeofday.c @@ -1,7 +1,8 @@ /* Work around the bug in some systems whereby gettimeofday clobbers the static buffer that localtime uses for it's return value. The gettimeofday function from Mac OS X 10.0.4, i.e. Darwin 1.3.7 has this problem. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + The tzset replacement is necessary for at least Solaris 2.5, 2.5.1, and 2.6. + Copyright (C) 2001, 2002, 2003 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 @@ -21,10 +22,11 @@ #include <config.h> -/* Disable the definitions of gettimeofday and localtime (from config.h) +/* Disable the definitions of these functions (from config.h) so we can use the library versions here. */ #undef gettimeofday #undef localtime +#undef tzset #include <sys/types.h> @@ -84,3 +86,23 @@ rpl_gettimeofday (struct timeval *tv, struct timezone *tz) return result; } + +/* This is a wrapper for tzset. It is used only on systems for which + tzset may clobber the static buffer used for localtime's result. + Save and restore the contents of the buffer used for localtime's + result around the call to tzset. */ +void +rpl_tzset (void) +{ + struct tm save; + + if (! localtime_buffer_addr) + { + time_t t = 0; + localtime_buffer_addr = localtime (&t); + } + + save = *localtime_buffer_addr; + tzset (); + *localtime_buffer_addr = save; +} |