# HG changeset patch # User Jim Meyering # Date 997605110 0 # Node ID d13cd36d8756a51734ea0ab674724e15e798fc68 # Parent 9d246221b832a4d78aec1437804bee39b82233fb *** empty log message *** diff --git a/lib/ChangeLog b/lib/ChangeLog --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,9 @@ +2001-08-12 Jim Meyering + + * gettimeofday.c: New file. + * gtod.h: New file. + * Makefile.am (libfetish_a_SOURCES): Add gtod.h. + 2001-08-04 Jim Meyering * error.h (__attribute__): Remove `|| __STRICT_ANSI__' from #if stmt, diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c new file mode 100644 --- /dev/null +++ b/lib/gettimeofday.c @@ -0,0 +1,71 @@ +/* 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 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* written by Jim Meyering */ + +#include + +/* Disable the definition of gettimeofday (from config.h) so we can use + the library version. */ +#undef gettimeofday + +#include + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include "gtod.h" + +static struct tm *localtime_buffer_addr; + +void +GTOD_init (void) +{ + time_t t = 0; + localtime_buffer_addr = localtime (&t); +} + +/* This is a wrapper for gettimeofday. It is used only on systems for which + gettimeofday clobbers 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 gettimeofday. */ + +int +rpl_gettimeofday (struct timeval *tv, struct timezone *tz) +{ + struct tm save; + if (! localtime_buffer_addr) + abort (); + + save = *localtime_buffer_addr; + result = gettimeofday (tv, tz); + *localtime_buffer_addr = save; + + return result; +} diff --git a/lib/gtod.h b/lib/gtod.h new file mode 100644 --- /dev/null +++ b/lib/gtod.h @@ -0,0 +1,21 @@ +#ifndef GTOD_H +# define GTOD_H 1 + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +void GTOD_init PARAMS ((void)); + +/* This is a no-op on compliant systems. */ +# if GETTIMEOFDAY_CLOBBERS_LOCALTIME_BUFFER +# define GETTIMEOFDAY_INIT() GTOD_init () +# else +# define GETTIMEOFDAY_INIT() /* empty */ +# endif + +#endif diff --git a/m4/ChangeLog b/m4/ChangeLog --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -34,13 +34,16 @@ * getline.m4 (AM_FUNC_GETLINE): Don't bother checking for string.h any more. - * progtest.m4 (AM_PATH_PROG_WITH_TEST): - Output "no" only if $1 isn't $4. + * progtest.m4 (AM_PATH_PROG_WITH_TEST): If not found, print "no", + not the default value. - * mbswidth.m4 (jm_PREREQ_MBSWIDTH): - No longer requires AM_C_PROTOTYPES. - Check for iswcntrl, mbsinit. Use AC_TRY_COMPILE, not AC_CHECK_DECLS, - for portability to Autoconf 2.13. + 2001-06-25 Bruno Haible + * mbswidth.m4 (jm_PREREQ_MBSWIDTH): Don't require AM_C_PROTOTYPES. + Also check for mbsinit. Needed for SCO 3.2v5.0.2. + Also include ; this is where AIX 3.2.5 declares wcwidth. + Also check for iswcntrl, used for wcwidth fallback. + Use AC_TRY_COMPILE to emulate AC_CHECK_DECLS, for portability + to Autoconf 2.13. 2001-08-03 Jim Meyering @@ -57,8 +60,6 @@ * Makefile.am.in (Makefile.am): Remove most of the unlocked-io.h stuff. Now it's in ../Makefile.cfg. - * gettimeofday.m4: New file. - 2001-07-04 Jim Meyering * Makefile.am.in (glibc-io.struct): New target. Rework the code