summaryrefslogtreecommitdiff
path: root/time/strftime.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-11-08 10:40:28 +0000
committerUlrich Drepper <drepper@redhat.com>1998-11-08 10:40:28 +0000
commit05f732b361988d0df967c78f151ae43d4c208be0 (patch)
tree326905202a4d72f85d3c461216bc4658e8799288 /time/strftime.c
parentd76bd17ff96a44417e0d0f1e50591bded3263199 (diff)
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.c44
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 (&lt, &tm)
+ if (! my_strftime_localtime_r (&lt, &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 (&lt, &gtm))
+ if (! my_strftime_gmtime_r (&lt, &gtm))
break;
diff = tm_diff (&ltm, &gtm);