Mercurial > emacs
changeset 14202:7acafb848e80
(Fdump_emacs): If HAVE_TZSET and not
LOCALTIME_CACHE, call tzset to force a tz reload.
(set_time_zone_rule): New decl.
(dump_tz): New var.
(main): Change TZ twice if the execution TZ happens to be the same as
the dump TZ.
(Fdump_emacs): Set TZ to unlikely value just before dumping.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 17 Jan 1996 18:03:03 +0000 |
parents | ff372902386d |
children | 1343cb900552 |
files | src/emacs.c |
diffstat | 1 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/emacs.c Wed Jan 17 17:54:40 1996 +0000 +++ b/src/emacs.c Wed Jan 17 18:03:03 1996 +0000 @@ -48,6 +48,7 @@ #endif extern void malloc_warning (); +extern void set_time_zone_rule (); extern char *index (); extern char *strerror (); @@ -315,6 +316,12 @@ #endif /* LINK_CRTL_SHARE */ #endif /* VMS */ +#ifdef HAVE_TZSET +/* A valid but unlikely value for the TZ environment value. + It is OK (though a bit slower) if the user actually chooses this value. */ +static char dump_tz[] = "UtC0"; +#endif + #ifndef ORDINARY_LINK /* We don't include crtbegin.o and crtend.o in the link, so these functions and variables might be missed. @@ -940,6 +947,23 @@ XSETFASTINT (Vmessage_log_max, 0); message_dolog ("", 0, 1); Vmessage_log_max = old_log_max; + +#ifdef HAVE_TZSET + { + /* If the execution TZ happens to be the same as the dump TZ, + change it to some other value and then change it back, + to force the underlying implementation to reload the TZ info. + This is needed on implementations that load TZ info from files, + since the TZ file contents may differ between dump and execution. */ + char *tz = getenv ("TZ"); + if (tz && !strcmp (tz, dump_tz)) + { + ++*tz; + tzset (); + --*tz; + } + } +#endif } initialized = 1; @@ -1329,6 +1353,14 @@ tem = Vpurify_flag; Vpurify_flag = Qnil; +#ifdef HAVE_TZSET + set_time_zone_rule (dump_tz); +#ifndef LOCALTIME_CACHE + /* Force a tz reload, since set_time_zone_rule doesn't. */ + tzset (); +#endif +#endif + fflush (stdout); #ifdef VMS mapout_data (XSTRING (filename)->data);