On Tue, May 2, 2017 at 1:39 AM, Bruno Haible <br...@clisp.org> wrote: > Currently: > - gettimeofday.c contains code that is not related to gettimeofday at all - > a tzset() override, for example. > - The user who wants a fixed 'tzset' function will also get a 'gettimeofday' > replacement, for no good reason. > - The declaration of tzset is not done in our replacement <time.h> but > through > the old idiom (a #define in config.h) - which causes problems in C++ mode. > - Because of this hard-to-maintain complexity, a dependency from module > 'time' > to module 'gettimeofday' has been added on 2013-12-17. > > This gets in the way of defining an override of tzset regarding the TZ > environment variable. So let me split module gettimeofday first. > > Other bugs in this area: > - gettimeofday.m4 lacks an AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) > that would ensure that the assignments REPLACE_GMTIME=1 and > REPLACE_LOCALTIME=1 are actually effective. > - m4_ifdef([gl_FUNC_TZSET_CLOBBER] is a bad way to test whether the 'tzset' > module is present. See > https://lists.gnu.org/archive/html/bug-gnulib/2017-04/msg00117.html > > > 2017-05-01 Bruno Haible <br...@clisp.org> > > New module 'localtime-buffer', split off from module 'gettimeofday'. > * lib/localtime-buffer.h: New file. > * lib/localtime-buffer.c: New file, extracted from lib/gettimeofday.c. > * lib/time.in.h (tzset): New declaration. > (localtime, gmtime): Don't test GNULIB_GETTIMEOFDAY. > * lib/tzset.c: New file, extracted from lib/gettimeofday.c. > * lib/gettimeofday.c: Include localtime-buffer.h. Remove code that was > moved to lib/localtime-buffer.c or lib/tzset.c. > * m4/localtime-buffer.m4: New file. > * m4/time_h.m4 (gl_HEADER_TIME_H_DEFAULTS): Initialize GNULIB_TZSET, > HAVE_TZSET, REPLACE_TZSET. > * m4/tzset.m4 (gl_FUNC_TZSET): Move code from m4/gettimeofday.m4 to > here, with modifications. Set HAVE_TZSET, REPLACE_TZSET. Invoke > gl_LOCALTIME_BUFFER_NEEDED. > (gl_FUNC_TZSET_CLOBBER): Don't require gl_HEADER_SYS_TIME_H; not > needed > since 2007-01-18. > * m4/gettimeofday.m4 (gl_FUNC_GETTIMEOFDAY): Remove code that deals > with > tzset. > (gl_FUNC_GETTIMEOFDAY_CLOBBER): Require gl_LOCALTIME_BUFFER_DEFAULTS. > Invoke gl_LOCALTIME_BUFFER_NEEDED instead of > gl_GETTIMEOFDAY_REPLACE_LOCALTIME. > (gl_GETTIMEOFDAY_REPLACE_LOCALTIME): Remove macro. > * modules/localtime-buffer: New file. > * modules/time (Depends-on): Remove 'gettimeofday'. > (Makefile.am): Substitute GNULIB_TZSET, HAVE_TZSET, > REPLACE_TZSET. Don't substitute GNULIB_GETTIMEOFDAY. > * modules/tzset (Description): Enable hyperlink to POSIX spec. > (Files): Add lib/tzset.c. > (Depends-on): Remove gettimeofday. Add localtime-buffer, time. > (configure.ac): Arrange to conditionally compile lib/tzset.c. Invoke > gl_TIME_MODULE_INDICATOR. > * modules/gettimeofday (Depends-on): Add localtime-buffer.
Thank you for all of those fixes and improvements.