Mercurial > hg > octave-lojdl > gnulib-hg
changeset 1516:022ece8c8705
(my_mktime_localtime_r): Renamed from localtime_r.
Define also if HAVE_LOCALTIME_R && defined (localtime_r), with
a body that merely expands localtime_r; this works around a
bug in Digital Unix 4.0A and 4.0D.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Thu, 08 Oct 1998 12:19:48 +0000 |
parents | 8c9b8bc49c4d |
children | 3f9b7ee1667a |
files | lib/mktime.c |
diffstat | 1 files changed, 17 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/mktime.c +++ b/lib/mktime.c @@ -127,22 +127,33 @@ #ifdef _LIBC # define localtime_r __localtime_r #else -# if ! HAVE_LOCALTIME_R && ! defined localtime_r -/* Approximate localtime_r as best we can in its absence. */ -# define localtime_r my_mktime_localtime_r -static struct tm *localtime_r __P ((const time_t *, struct tm *)); +# if HAVE_LOCALTIME_R == defined (localtime_r) +/* Provide our own substitute for a missing or possibly broken localtime_r. */ +static struct tm *my_mktime_localtime_r __P ((const time_t *, struct tm *)); static struct tm * -localtime_r (t, tp) +my_mktime_localtime_r (t, tp) const time_t *t; struct tm *tp; { +# ifdef localtime_r + /* Digital Unix 4.0A and 4.0D have a macro localtime_r with the + standard meaning, along with an unwanted, nonstandard function + localtime_r. The placeholder function my_mktime_localtime_r + invokes the macro; use that instead of the system's bogus + localtime_r. */ + return localtime_r (t, tp); +# undef localtime_r +# else /* ! defined (localtime_r) */ + /* Approximate localtime_r as best we can in its absence. */ struct tm *l = localtime (t); if (! l) return 0; *tp = *l; return tp; +# endif /* ! defined (localtime_r) */ } -# endif /* ! HAVE_LOCALTIME_R && ! defined (localtime_r) */ +# define localtime_r my_mktime_localtime_r +# endif /* HAVE_LOCALTIME_R == defined (localtime_r) */ #endif /* ! _LIBC */