• Paul Eggert's avatar
    New optional ZONE arg for format-time-string etc. · af32fa95
    Paul Eggert authored
    This simplifies time conversions in other time zones.
    It also prevents display-time-world tampering with TZ (Bug#21020).
    * admin/admin.el (add-release-logs):
    Use improved add-log-time-format API.
    * admin/merge-gnulib (GNULIB_MODULES): Add time_rz, timegm.
    (GNULIB_TOOL_FLAGS): Avoid flexmember, setenv, unsetenv.
    * configure.ac (tzalloc): Remove test for this, since
    Emacs no longer uses HAVE_TZALLOC directly.
    * doc/lispref/os.texi (Time of Day, Time Conversion)
    (Time Parsing):
    * etc/NEWS: Document the new behavior.
    Merge from gnulib, incorporating:
    2015-07-25 strftime: fix newly-introduced bug on Solaris
    2015-07-23 fprintftime, strftime: use timezone_t args
    * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
    * lib/strftime.c, lib/strftime.h, lib/time.in.h, m4/sys_time_h.m4:
    * m4/time_h.m4:
    Update from gnulib.
    * lib/time_rz.c, lib/timegm.c, m4/time_rz.m4, m4/timegm.m4:
    New files from gnulib.
    * lisp/time-stamp.el (time-stamp-string):
    * lisp/time.el (display-time-world-list)
    (display-time-world-display):
    Use new API, with time zone arg.
    * lisp/time.el (display-time-world-display):
    Fix race when current-time advances while we're running.
    * lisp/vc/add-log.el (add-log-iso8601-time-zone)
    (add-log-iso8601-time-string): Accept optional time zone arg.
    * lisp/vc/add-log.el (add-change-log-entry):
    * lisp/vc/log-edit.el (log-edit-changelog-ours-p): Use new arg.
    * nt/gnulib.mk: Propagate lib/gnulib.mk changes here.
    Add rules for the time module, since they're now needed
    for tzalloc etc.
    * src/conf_post.h (getenv_TZ, setenv_TZ): New macros.
    (emacs_getenv_TZ, emacs_setenv_TZ): New decls.
    * src/editfns.c: Include errno.h.
    (set_time_zone_rule): Omit unnecessary forward decl.
    (initial_tz): Remove, replacing with ...
    (local_tz, wall_clock_tz, utc_tz): New static vars and constants.
    (tzeqlen): New constant; prefer it to (sizeof "TZ=" - 1).
    (emacs_localtime_rz, emacs_mktime_z, xtzalloc, xtzfree)
    (tzlookup): New static functions.
    (init_editfns): New arg DUMPING.  All uses changed.
    (init_editfns): Omit most initialization if dumping, not if
    !initialized.  Initialize wall_clock_tz and local_tz.
    (emacs_nmemftime, format_time_string): Time zone argument can now
    be any time zone, not just a boolean for UTC or local time.  All
    callers changed.
    (Fformat_time_string, Fencode_time, Fcurrent_time_string)
    (Fcurrent_time_zone): New optional arg ZONE.
    (Fdecode_time, Fset_time_zone_rule): ZONE arg can now also take
    the same form as with the other new additions.
    (decode_time_zone): Remove; no longer needed.
    (tzvalbuf): Now file-scope.
    (emacs_getenv_TZ, emacs_setenv_TZ): New functions.
    (syms_of_editfns): Define Qwall.
    * src/editfns.c (mktime_z) [!HAVE_TZALLOC]:
    * src/systime.h (mktime_z, timezone_t, tzalloc, tzfree)
    [!HAVE_TZALLOC]:
    Remove; now supplied by gnulib.
    * src/emacs.c (main):
    * src/lisp.h (init_editfns): Adjust to init_editfns API change.
    af32fa95
systime.h 3.16 KB