diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-11-08 10:40:28 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-11-08 10:40:28 +0000 |
commit | 05f732b361988d0df967c78f151ae43d4c208be0 (patch) | |
tree | 326905202a4d72f85d3c461216bc4658e8799288 /time/strftime.c | |
parent | d76bd17ff96a44417e0d0f1e50591bded3263199 (diff) | |
download | glibc-05f732b361988d0df967c78f151ae43d4c208be0.tar.gz |
Update.
1998-11-05 1998 H.J. Lu <hjl@gnu.org>
* libio/iofgets.c (_IO_fgets): Don't report error
if something was read in and errno is set to
EAGAIN.
* libio/iofgets_u.c (fgets_unlocked): Likewise.
1998-11-05 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/net/if_packet.h: Don't include kernel
header; it defines too much. Provide a local definition of struct
sockaddr_pkt and a comment advising against its use.
1998-11-06 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* extra-lib.mk: Avoid empty include list.
1998-11-04 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* extra-lib.mk: Add support for $(lib)-shared-only-routines.
* elf/Makefile (libdl-routines): Add dlopenold only if doing
versioning.
(libdl-shared-only-routines): New variable.
1998-11-06 Paul Eggert <eggert@twinsun.com>
Don't invoke localtime_r or gmtime_r unless it's the GNU C
library's localtime_r and gmtime_r; there are too many buggy
implementations of localtime_r and gmtime_r out there, and
it's not worth keeping track of all the different bugs.
* time/mktime.c (__EXTENSIONS__): Remove.
(<unistd.h>): No need to include.
* time/strftime.c: Likewise.
* time/mktime.c (_POSIX_THREAD_SAFE_FUNCTIONS, HAVE_LOCALTIME_R):
Remove.
(my_mktime_localtime_r): Renamed from localtime_r; all uses changed.
Base it on localtime unless _LIBC.
* time/strftime.c (my_strftime_gmtime_r): Renamed from gmtime_r;
all uses changed.
(my_strftime_localtime_r): Renamed from localtime_r; all uses changed.
Base them on localtime/gmtime if not _LIBC.
1998-11-07 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/isastream.c: Always return 0 unless it is an invalid
file descriptor. This makes this function actually usable.
Proposed by Mark Kettenis <kettenis@phys.uva.nl>.
Diffstat (limited to 'time/strftime.c')
-rw-r--r-- | time/strftime.c | 44 |
1 files changed, 15 insertions, 29 deletions
diff --git a/time/strftime.c b/time/strftime.c index 69babade36..3e81d2189b 100644 --- a/time/strftime.c +++ b/time/strftime.c @@ -20,11 +20,6 @@ # include <config.h> #endif -/* Some hosts need this in order to declare localtime_r properly. */ -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif - #ifdef _LIBC # define HAVE_LIMITS_H 1 # define HAVE_MBLEN 1 @@ -46,12 +41,6 @@ #include <ctype.h> #include <sys/types.h> /* Some systems define `time_t' here. */ -/* Some systems require <unistd.h> to be included before <time.h> - for localtime_r to be declared properly. */ -#if HAVE_UNISTD_H -# include <unistd.h> -#endif - #ifdef TIME_WITH_SYS_TIME # include <sys/time.h> # include <time.h> @@ -153,19 +142,20 @@ extern char *tzname[]; #ifdef _LIBC -# define gmtime_r __gmtime_r -# define localtime_r __localtime_r +# define my_strftime_gmtime_r __gmtime_r +# define my_strftime_localtime_r __localtime_r # define tzname __tzname # define tzset __tzset #else -# if ! HAVE_LOCALTIME_R -# if ! HAVE_TM_GMTOFF -/* Approximate gmtime_r as best we can in its absence. */ -# undef gmtime_r -# define gmtime_r my_gmtime_r -static struct tm *gmtime_r __P ((const time_t *, struct tm *)); + +/* If we're a strftime substitute in a GNU program, then prefer gmtime + to gmtime_r, since many gmtime_r implementations are buggy. + Similarly for localtime_r. */ + +# if ! HAVE_TM_GMTOFF +static struct tm *my_strftime_gmtime_r __P ((const time_t *, struct tm *)); static struct tm * -gmtime_r (t, tp) +my_strftime_gmtime_r (t, tp) const time_t *t; struct tm *tp; { @@ -175,14 +165,11 @@ gmtime_r (t, tp) *tp = *l; return tp; } -# endif /* ! HAVE_TM_GMTOFF */ +# endif /* ! HAVE_TM_GMTOFF */ -/* Approximate localtime_r as best we can in its absence. */ -# undef localtime_r -# define localtime_r my_ftime_localtime_r -static struct tm *localtime_r __P ((const time_t *, struct tm *)); +static struct tm *my_strftime_localtime_r __P ((const time_t *, struct tm *)); static struct tm * -localtime_r (t, tp) +my_strftime_localtime_r (t, tp) const time_t *t; struct tm *tp; { @@ -192,7 +179,6 @@ localtime_r (t, tp) *tp = *l; return tp; } -# endif /* ! HAVE_LOCALTIME_R */ #endif /* ! defined _LIBC */ @@ -1203,7 +1189,7 @@ my_strftime (s, maxsize, format, tp ut_argument) occurred. */ struct tm tm; - if (! localtime_r (<, &tm) + if (! my_strftime_localtime_r (<, &tm) || ((ltm.tm_sec ^ tm.tm_sec) | (ltm.tm_min ^ tm.tm_min) | (ltm.tm_hour ^ tm.tm_hour) @@ -1213,7 +1199,7 @@ my_strftime (s, maxsize, format, tp ut_argument) break; } - if (! gmtime_r (<, >m)) + if (! my_strftime_gmtime_r (<, >m)) break; diff = tm_diff (<m, >m); |