Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/lib/libc/time Sync with tzcode2014h



details:   https://anonhg.NetBSD.org/src/rev/9101dca594e8
branches:  trunk
changeset: 332754:9101dca594e8
user:      christos <christos%NetBSD.org@localhost>
date:      Tue Oct 07 21:51:03 2014 +0000

description:
Sync with tzcode2014h

diffstat:

 lib/libc/time/Makefile     |  138 ++++--
 lib/libc/time/Makefile.inc |   14 +-
 lib/libc/time/NEWS         |  251 +++++++++++-
 lib/libc/time/README       |   15 +-
 lib/libc/time/Theory       |   34 +-
 lib/libc/time/ctime.3      |  127 ++---
 lib/libc/time/localtime.c  |  915 +++++++++++++++++++++-----------------------
 lib/libc/time/private.h    |  259 +++++++++--
 lib/libc/time/strftime.c   |  155 +------
 lib/libc/time/time2posix.3 |   16 +-
 lib/libc/time/tz-art.htm   |  100 ++--
 lib/libc/time/tz-link.htm  |   83 ++-
 lib/libc/time/tzfile.5     |   30 +-
 lib/libc/time/tzfile.h     |   10 +-
 lib/libc/time/tzselect.ksh |   31 +-
 lib/libc/time/tzset.3      |  110 ++++-
 lib/libc/time/zdump.8      |   52 +-
 lib/libc/time/zdump.c      |  557 ++++++++++++++++++++-------
 lib/libc/time/zic.8        |   16 +-
 lib/libc/time/zic.c        |  434 ++++++++++-----------
 20 files changed, 1987 insertions(+), 1360 deletions(-)

diffs (truncated from 6331 to 300 lines):

diff -r dfeddb348420 -r 9101dca594e8 lib/libc/time/Makefile
--- a/lib/libc/time/Makefile    Tue Oct 07 21:50:36 2014 +0000
+++ b/lib/libc/time/Makefile    Tue Oct 07 21:51:03 2014 +0000
@@ -5,7 +5,7 @@
 PACKAGE=       tzcode
 
 # Version numbers of the code and data distributions.
-VERSION=       2014f
+VERSION=       2014h
 
 # Email address for bug reports.
 BUGEMAIL=      tz%iana.org@localhost
@@ -84,9 +84,11 @@
 # below.  If you want both sets of data available, with leap seconds counted
 # normally, use
 #      REDO=           right_posix
-# below.
+# below.  If you want just POSIX-compatible time values, but with
+# out-of-scope and often-wrong data from the file 'backzone', use
+#      REDO=           posix_packrat
 # POSIX mandates that leap seconds not be counted; for compatibility with it,
-# use either "posix_only" or "posix_right".
+# use "posix_only", "posix_right", or "posix_packrat".
 
 REDO=          posix_right
 
@@ -107,25 +109,38 @@
 #      ctime_r and asctime_r incompatibly with the POSIX standard (Solaris 8).
 #  -DHAVE_INTTYPES_H=1 if you have a pre-C99 compiler with "inttypes.h"
 #  -DHAVE_LINK=0 if your system lacks a link function
+#  -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function
+#  -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz
+#      This defaults to 1 if a working localtime_rz seems to be available.
+#      localtime_rz can make zdump significantly faster, but is nonstandard.
 #  -DHAVE_SETTIMEOFDAY=0 if settimeofday does not exist (SVR0?)
 #  -DHAVE_SETTIMEOFDAY=1 if settimeofday has just 1 arg (SVR4)
 #  -DHAVE_SETTIMEOFDAY=2 if settimeofday uses 2nd arg (4.3BSD)
 #  -DHAVE_SETTIMEOFDAY=3 if settimeofday ignores 2nd arg (4.4BSD)
 #  -DHAVE_STDINT_H=1 if you have a pre-C99 compiler with "stdint.h"
+#  -DHAVE_STRFTIME_L=1 if <time.h> declares locale_t and strftime_l
+#      This defaults to 0 if _POSIX_VERSION < 200809, 1 otherwise.
 #  -DHAVE_SYMLINK=0 if your system lacks the symlink function
 #  -DHAVE_SYS_STAT_H=0 if your compiler lacks a "sys/stat.h"
 #  -DHAVE_SYS_WAIT_H=0 if your compiler lacks a "sys/wait.h"
+#  -DHAVE_TZSET=0 if your system lacks a tzset function
 #  -DHAVE_UNISTD_H=0 if your compiler lacks a "unistd.h" (Microsoft C++ 7?)
 #  -DHAVE_UTMPX_H=1 if your compiler has a "utmpx.h"
-#  -DLOCALE_HOME=\"path\" if locales are in "path", not "/usr/lib/locale"
 #  -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU=1
 #      if you do not want run time warnings about formats that may cause
 #      year 2000 grief
+#  -DTHREAD_SAFE=1 to make localtime.c thread-safe, as POSIX requires;
+#      not needed by the main-program tz code, which is single-threaded.
+#      Append other compiler flags as needed, e.g., -pthread on GNU/Linux.
 #  -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t
 #  -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz"
 #  -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
 #      the default is system-supplied, typically "/usr/lib/locale"
 #  -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
+#  -DUNINIT_TRAP=1 if reading uninitialized storage can cause problems
+#      other than simply getting garbage data
+#  -DUSE_LTZ=0 to build zdump with the system time zone library
+#      Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
 #  -DNO_ERROR_IN_DST_GAP=1
 #      if you want mktime() not to return an error in the DST gap.
 #  -DZIC_MAX_ABBR_LEN_WO_WARN=3
@@ -157,25 +172,12 @@
 # (or if you decide to add such a field in your system's "time.h" file),
 # add the name to a define such as
 #      -DTM_GMTOFF=tm_gmtoff
-# or
-#      -DTM_GMTOFF=_tm_gmtoff
-# to the end of the "CFLAGS=" line.
-# Neither tm_gmtoff nor _tm_gmtoff is described in X3J11's work;
-# in its work, use of "tm_gmtoff" is described as non-conforming.
-# Both Linux and BSD have done the equivalent of defining TM_GMTOFF in
-# their recent releases.
-#
-# If your system has a "zone abbreviation" field in its "struct tm"s
-# (or if you decide to add such a field in your system's "time.h" file),
-# add the name to a define such as
+# to the end of the "CFLAGS=" line.  If not defined, the code attempts to
+# guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
+# Similarly, if your system has a "zone abbreviation" field, define
 #      -DTM_ZONE=tm_zone
-# or
-#      -DTM_ZONE=_tm_zone
-# to the end of the "CFLAGS=" line.
-# Neither tm_zone nor _tm_zone is described in X3J11's work;
-# in its work, use of "tm_zone" is described as non-conforming.
-# Both UCB and Sun have done the equivalent of defining TM_ZONE in
-# their recent releases.
+# and define NO_TM_ZONE to suppress any guessing.  These two fields are not
+# required by POSIX, but are widely available on GNU/Linux and BSD systems.
 #
 # If you want functions that were inspired by early versions of X3J11's work,
 # add
@@ -199,6 +201,17 @@
 # These functions may well disappear in future releases of the time
 # conversion package.
 #
+# If you don't want functions that were inspired by NetBSD, add
+#      -DNETBSD_INSPIRED=0
+# to the end of the "CFLAGS=" line.  Otherwise, the functions
+# "localtime_rz", "mktime_z", "tzalloc", and "tzfree" are added to the
+# time library, and if STD_INSPIRED is also defined the functions
+# "posix2time_z" and "time2posix_z" are added as well.
+# The functions ending in "_z" (or "_rz") are like their unsuffixed
+# (or suffixed-by-"_r") counterparts, except with an extra first
+# argument of opaque type timezone_t that specifies the time zone.
+# "tzalloc" allocates a timezone_t value, and "tzfree" frees it.
+#
 # If you want to allocate state structures in localtime, add
 #      -DALL_STATE
 # to the end of the "CFLAGS=" line.  Storage is obtained by calling malloc.
@@ -208,11 +221,6 @@
 # to the end of the "CFLAGS=" line.
 # This variable is not described in X3J11's work.
 #
-# If you want a "gtime" function (a la MACH), add
-#      -DCMUCS
-# to the end of the "CFLAGS=" line
-# This function is not described in X3J11's work.
-#
 # NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put
 # out by the National Institute of Standards and Technology
 # which claims to test C and Posix conformance.  If you want to pass PCTS, add
@@ -268,6 +276,10 @@
   SP_CHARSET_FIXED=YES \
   SP_ENCODING=UTF-8
 
+# This expensive test requires USE_LTZ.
+# To suppress it, define this macro to be empty.
+CHECK_TIME_T_ALTERNATIVES = check_time_t_alternatives
+
 # SAFE_CHAR is a regular expression that matches a safe character.
 # Some parts of this distribution are limited to safe characters;
 # others can use any UTF-8 character.
@@ -319,23 +331,24 @@
 RANLIB=                :
 
 TZCOBJS=       zic.o scheck.o ialloc.o
-TZDOBJS=       zdump.o localtime.o ialloc.o asctime.o
+TZDOBJS=       zdump.o localtime.o asctime.o
 DATEOBJS=      date.o localtime.o strftime.o asctime.o
 LIBSRCS=       localtime.c asctime.c difftime.c
 LIBOBJS=       localtime.o asctime.o difftime.o
 HEADERS=       tzfile.h private.h
 NONLIBSRCS=    zic.c zdump.c scheck.c ialloc.c
 NEWUCBSRCS=    date.c strftime.c
-SOURCES=       $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) tzselect.ksh
+SOURCES=       $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) \
+                       tzselect.ksh workman.sh
 MANS=          newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
                        tzfile.5 tzselect.8 zic.8 zdump.8
 MANTXTS=       newctime.3.txt newstrftime.3.txt newtzset.3.txt \
                        time2posix.3.txt \
                        tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \
                        date.1.txt
-COMMON=                Makefile README
+COMMON=                CONTRIBUTING Makefile NEWS README Theory
 WEB_PAGES=     tz-art.htm tz-link.htm
-DOCS=          NEWS Theory $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
+DOCS=          $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
 PRIMARY_YDATA= africa antarctica asia australasia \
                europe northamerica southamerica
 YDATA=         $(PRIMARY_YDATA) pacificnew etcetera backward
@@ -344,10 +357,10 @@
 ZONETABLES=    zone1970.tab zone.tab
 TABDATA=       iso3166.tab leapseconds $(ZONETABLES)
 LEAP_DEPS=     leapseconds.awk leap-seconds.list
-DATA=          $(YDATA) $(NDATA) $(TABDATA) \
-                       $(LEAP_DEPS) yearistype.sh
+DATA=          $(YDATA) $(NDATA) backzone $(TABDATA) \
+                       leap-seconds.list yearistype.sh
 AWK_SCRIPTS=   checktab.awk leapseconds.awk
-MISC=          $(AWK_SCRIPTS) workman.sh zoneinfo2tdf.pl
+MISC=          $(AWK_SCRIPTS) zoneinfo2tdf.pl
 ENCHILADA=     $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC)
 
 # And for the benefit of csh users on systems that assume the user
@@ -430,6 +443,11 @@
                $(ZIC) -y $(YEARISTYPE) -d $(DESTDIR)$(TZDIR)-leaps \
                        -L leapseconds $(TDATA)
 
+posix_packrat: posix_only backzone
+               $(AWK) '/^Rule/' $(TDATA) | \
+                 $(ZIC) -y $(YEARISTYPE) -d $(DESTDIR)$(TZDIR) \
+                       -L /dev/null - backzone
+
 zones:         $(REDO)
 
 libtz.a:       $(LIBOBJS)
@@ -450,20 +468,38 @@
                        <$? >$@
                chmod +x $@
 
-check:         check_character_set check_tables check_web
+check:         check_character_set check_white_space check_sorted \
+                 check_tables check_web
 
 check_character_set: $(ENCHILADA)
                LC_ALL=en_US.utf8 && export LC_ALL && \
                sharp='#' && \
                ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \
                        $(MISC) $(SOURCES) $(WEB_PAGES) && \
-               ! grep -Env $(SAFE_SHARP_LINE) $(YDATA) $(NDATA) iso3166.tab \
-                       zone.tab leapseconds $(LEAP_DEPS) yearistype.sh && \
+               ! grep -Env $(SAFE_SHARP_LINE) $(TDATA) backzone \
+                       iso3166.tab leapseconds yearistype.sh zone.tab && \
                test $$(grep -Ecv $(SAFE_SHARP_LINE) Makefile) -eq 1 && \
-               ! grep -Env $(NONSYM_LINE) README NEWS Theory $(MANS) date.1 \
-                       zone1970.tab && \
+               ! grep -Env $(NONSYM_LINE) CONTRIBUTING NEWS README Theory \
+                       $(MANS) date.1 zone1970.tab && \
                ! grep -Env $(VALID_LINE) $(ENCHILADA)
 
+check_white_space: $(ENCHILADA)
+               ! grep -n ' '$(TAB_CHAR) $(ENCHILADA)
+               ! grep -n '[[:space:]]$$' $(ENCHILADA)
+               ! grep -n "$$(printf '[\f\r\v]\n')" $(ENCHILADA)
+
+CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
+
+check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
+               $(AWK) '/^Link/ {print $$3}' backward | LC_ALL=C sort -cu
+               $(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
+               $(AWK) '/^[^#]/ {print $$1}' iso3166.tab | LC_ALL=C sort -cu
+               $(AWK) '/^[^#]/ {print $$1}' zone.tab | LC_ALL=C sort -c
+               $(AWK) '/^[^#]/ {print substr($$0, 1, 2)}' zone1970.tab | \
+                 LC_ALL=C sort -c
+               $(AWK) '/^[^#]/ $(CHECK_CC_LIST)' zone1970.tab | \
+                 LC_ALL=C sort -cu
+
 check_tables:  checktab.awk $(PRIMARY_YDATA) $(ZONETABLES)
                for tab in $(ZONETABLES); do \
                  $(AWK) -f checktab.awk -v zone_table=$$tab $(PRIMARY_YDATA) \
@@ -487,7 +523,7 @@
 names:
                @echo $(ENCHILADA)
 
-public:                check check_public check_time_t_alternatives \
+public:                check check_public $(CHECK_TIME_T_ALTERNATIVES) \
                tarballs signatures
 
 date.1.txt:    date.1
@@ -547,14 +583,22 @@
 # Check that the code works under various alternative
 # implementations of time_t.
 check_time_t_alternatives:
+               if diff -q Makefile Makefile 2>/dev/null; then \
+                 quiet_option='-q'; \
+               else \
+                 quiet_option=''; \
+               fi && \
                zones=`$(AWK) '/^[^#]/ { print $$3 }' <zone1970.tab` && \
                for type in $(TIME_T_ALTERNATIVES); do \
                  mkdir -p tzpublic/$$type && \
                  make clean_misc && \
                  make TOPDIR=`pwd`/tzpublic/$$type \
                    CFLAGS='$(CFLAGS) -Dtime_tz='"'$$type'" \
+                   REDO='$(REDO)' \
                    install && \
-                 diff -qr tzpublic/int64_t/etc/zoneinfo tzpublic/$$type/etc/zoneinfo && \
+                 diff $$quiet_option -r \
+                   tzpublic/int64_t/etc/zoneinfo \
+                   tzpublic/$$type/etc/zoneinfo && \
                  case $$type in \
                  int32_t) range=-2147483648,2147483647;; \
                  uint32_t) range=0,4294967296;; \
@@ -577,12 +621,12 @@
 tzcode$(VERSION).tar.gz: set-timestamps.out
                LC_ALL=C && export LC_ALL && \
                tar $(TARFLAGS) -cf - \
-                   $(COMMON) $(DOCS) $(SOURCES) $(MISC) | \
+                   $(COMMON) $(DOCS) $(SOURCES) | \
                  ${TOOL_GZIP} $(GZIPFLAGS) > $@
 
 tzdata$(VERSION).tar.gz: set-timestamps.out
                LC_ALL=C && export LC_ALL && \
-               tar $(TARFLAGS) -cf - $(COMMON) $(DATA) | \
+               tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \
                  ${TOOL_GZIP} $(GZIPFLAGS) > $@
 
 signatures:    tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc
@@ -611,15 +655,15 @@
 ialloc.o:      private.h
 localtime.o:   private.h tzfile.h
 scheck.o:      private.h
-strftime.o:    tzfile.h
+strftime.o:    private.h tzfile.h
 zdump.o:       version.h
 zic.o:         private.h tzfile.h version.h
 
 .KEEP_STATE:
 
 .PHONY: ALL INSTALL all
-.PHONY: check check_character_set check_public check_tables
-.PHONY: check_time_t_alternatives check_web clean clean_misc
-.PHONY: install maintainer-clean names posix_only posix_right



Home | Main Index | Thread Index | Old Index