From adf59137a1b61c575b88a0e20beb0a9306f0e920 Mon Sep 17 00:00:00 2001 From: Philip Paeps Date: Tue, 16 Aug 2022 10:34:28 +0800 Subject: [PATCH] Import tzdata 2022c --- Makefile | 9 +++++---- NEWS | 26 +++++++++++++++++++++++++- asia | 4 ++-- theory.html | 26 ++++++++++++++------------ version | 2 +- ziguard.awk | 37 ++++++++++++++++++++----------------- zone1970.tab | 24 ++++++++++++++++++++++++ 7 files changed, 91 insertions(+), 37 deletions(-) diff --git a/Makefile b/Makefile index 88240ad70e0e..b68f843d08ee 100644 --- a/Makefile +++ b/Makefile @@ -298,8 +298,9 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \ # 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 -# 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. +# and define NO_TM_ZONE to suppress any guessing. Although these two fields +# not required by POSIX, a future version of POSIX is planned to require them +# and they are widely available on GNU/Linux and BSD systems. # # The next batch of options control support for external variables # exported by tzcode. In practice these variables are less useful @@ -538,7 +539,7 @@ DATA= $(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \ leapseconds $(ZONETABLES) AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk \ ziguard.awk zishrink.awk -MISC= $(AWK_SCRIPTS) zoneinfo2tdf.pl +MISC= $(AWK_SCRIPTS) TZS_YEAR= 2050 TZS_CUTOFF_FLAG= -c $(TZS_YEAR) TZS= to$(TZS_YEAR).tzs @@ -567,7 +568,7 @@ VERSION_DEPS= \ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \ workman.sh zdump.8 zdump.c zic.8 zic.c \ ziguard.awk zishrink.awk \ - zone.tab zone1970.tab zoneinfo2tdf.pl + zone.tab zone1970.tab # And for the benefit of csh users on systems that assume the user # shell should be used to handle commands in Makefiles. . . diff --git a/NEWS b/NEWS index 6a0d5c502727..c4abb32cd4dc 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,29 @@ News for the tz database +Release 2022c - 2022-08-15 17:47:18 -0700 + + Briefly: + Work around awk bug in FreeBSD, macOS, etc. + Improve tzselect on intercontinental Zones. + + Changes to code + + Work around a bug in onetrueawk that broke commands like + 'make traditional_tarballs' on FreeBSD, macOS, etc. + (Problem reported by Deborah Goldsmith.) + + Add code to tzselect that uses experimental structured comments in + zone1970.tab to clarify whether Zones like Africa/Abidjan and + Europe/Istanbul cross continent or ocean boundaries. + (Inspired by a problem reported by Peter Krefting.) + + Fix bug with 'zic -d /a/b/c' when /a is unwritable but the + directory /a/b already exists. + + Remove zoneinfo2tdf.pl, as it was unused and triggered false + malware alarms on some email servers. + + Release 2022b - 2022-08-10 15:38:32 -0700 Briefly: @@ -83,7 +107,7 @@ Release 2022b - 2022-08-10 15:38:32 -0700 zic no longer complains "can't determine time zone abbreviation to use just after until time" when a transition to a new standard - time occurs simultanously with the first DST fallback transition. + time occurs simultaneously with the first DST fallback transition. Changes to build procedure diff --git a/asia b/asia index def9b204c053..6e3ea4b36e7e 100644 --- a/asia +++ b/asia @@ -1505,8 +1505,8 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov # onwards (which was during the Islamic Republic). # From Francis Santoni (2022-06-01): -# for Iran and 1977 the effective change is only 20 october -# (UIT No. 143 17.XI.1977) and not 23 september (UIT No. 141 13.IX.1977). +# for Iran and 1977 the effective change is only 20 October +# (UIT No. 143 17.XI.1977) and not 23 September (UIT No. 141 13.IX.1977). # UIT is the Operational Bulletin of International Telecommunication Union. # From Roozbeh Pournader (2003-03-15): diff --git a/theory.html b/theory.html index 2b14c5114686..56390ae44a8d 100644 --- a/theory.html +++ b/theory.html @@ -122,7 +122,7 @@ If geolocation information is available, a selection interface can locate the user on a timezone map or prioritize names that are geographically close. For an example selection interface, see the tzselect program in the tz code. -The Unicode Common Locale Data +The Unicode Common Locale Data Repository contains data that may be useful for other selection interfaces; it maps timezone names like Europe/Prague to locale-dependent strings like "Prague", "Praha", "Прага", and "布拉格". @@ -571,7 +571,7 @@ in decreasing order of importance: locations while uninhabited. The leading '-' is a flag that the UT offset is in some sense undefined; this notation is derived - from Internet + from Internet RFC 3339. @@ -624,7 +624,7 @@ Errors in the tz database arise from many sources: should be observed. In her 2015 book The + href="https://www.hup.harvard.edu/catalog.php?isbn=9780674286146">The Global Transformation of Time, 1870–1950, Vanessa Ogle writes "Outside of Europe and North America there was no system of time @@ -810,7 +810,7 @@ href="https://www.dissentmagazine.org/blog/booked-a-global-history-of-time-vanes See: Stephenson FR, Morrison LV, Hohenkerk CY. Measurement of the Earth's rotation: 720 BC to AD 2015. - Proc Royal Soc A. 2016 Dec 7;472:20160404. + Proc Royal Soc A. 2016;472:20160404. Also see: Espenak F. Uncertainty in Delta T (ΔT). @@ -1036,7 +1036,7 @@ an older zic. and numeric data as described above. The file's format is TZif, a timezone information format that contains binary data; see - Internet + Internet RFC 8536. The daylight saving time rules to be used for a particular timezone are encoded in the @@ -1064,11 +1064,12 @@ an older zic.
  • The code supports platforms with a UT offset member - in struct tm, e.g., tm_gmtoff. -
  • -
  • - The code supports platforms with a time zone abbreviation member in - struct tm, e.g., tm_zone. + in struct tm, e.g., tm_gmtoff, + or with a time zone abbreviation member in + struct tm, e.g., tm_zone. As noted + in Austin + Group defect 1533, a future version of POSIX is planned to + require tm_gmtoff and tm_zone.
  • Functions tzalloc, tzfree, @@ -1129,7 +1130,8 @@ The vestigial APIs are: APIs. Although it can still be used in arguments to mktime to disambiguate timestamps near - a DST transition when the clock jumps back, this + a DST transition when the clock jumps back on + platforms lacking tm_gmtoff, this disambiguation does not work when standard time itself jumps back, which can occur when a location changes to a time zone with a lesser UT offset. @@ -1277,7 +1279,7 @@ the operating system kernel clock as described in Precision timekeeping, and this package by default installs a leapseconds file commonly used by -NTP +NTP software that adjusts the kernel clock. However, kernel-clock twiddling approximates UTC only roughly, and systems needing more-precise UTC can use this package's leap diff --git a/version b/version index 7c9f279dc3c4..9fcedf24a675 100644 --- a/version +++ b/version @@ -1 +1 @@ -2022b +2022c diff --git a/ziguard.awk b/ziguard.awk index 0728baa51343..0556cc4a9dbb 100644 --- a/ziguard.awk +++ b/ziguard.awk @@ -91,12 +91,13 @@ $1 == "#PACKRATLIST" && $2 == PACKRATLIST { /^Zone/ { zone = $2 } DATAFORM != "main" { - in_comment = /^#/ + in_comment = $0 ~ /^#/ uncomment = comment_out = 0 # If this line should differ due to Czechoslovakia using negative SAVE values, # uncomment the desired version and comment out the undesired one. - if (zone == "Europe/Prague" && /^#?[\t ]+[01]:00[\t ]/ && /1947 Feb 23/) { + if (zone == "Europe/Prague" && $0 ~ /^#?[\t ]+[01]:00[\t ]/ \ + && $0 ~ /1947 Feb 23/) { if (($(in_comment + 2) != "-") == (DATAFORM != "rearguard")) { uncomment = in_comment } else { @@ -106,9 +107,9 @@ DATAFORM != "main" { # If this line should differ due to Ireland using negative SAVE values, # uncomment the desired version and comment out the undesired one. - Rule_Eire = /^#?Rule[\t ]+Eire[\t ]/ + Rule_Eire = $0 ~ /^#?Rule[\t ]+Eire[\t ]/ Zone_Dublin_post_1968 \ - = (zone == "Europe/Dublin" && /^#?[\t ]+[01]:00[\t ]/ \ + = (zone == "Europe/Dublin" && $0 ~ /^#?[\t ]+[01]:00[\t ]/ \ && (!$(in_comment + 4) || 1968 < $(in_comment + 4))) if (Rule_Eire || Zone_Dublin_post_1968) { if ((Rule_Eire \ @@ -122,9 +123,9 @@ DATAFORM != "main" { # If this line should differ due to Namibia using negative SAVE values, # uncomment the desired version and comment out the undesired one. - Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/ + Rule_Namibia = $0 ~ /^#?Rule[\t ]+Namibia[\t ]/ Zone_using_Namibia_rule \ - = (zone == "Africa/Windhoek" && /^#?[\t ]+[12]:00[\t ]/ \ + = (zone == "Africa/Windhoek" && $0 ~ /^#?[\t ]+[12]:00[\t ]/ \ && ($(in_comment + 2) == "Namibia" \ || ($(in_comment + 2) == "-" && $(in_comment + 3) == "CAT" \ && ((1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \ @@ -142,8 +143,8 @@ DATAFORM != "main" { # If this line should differ due to Portugal benefiting from %z if supported, # uncomment the desired version and comment out the undesired one. - if (/^#?[\t ]+-[12]:00[\t ]+Port[\t ]+[%+-]/) { - if (/%z/ == (DATAFORM == "vanguard")) { + if ($0 ~ /^#?[\t ]+-[12]:00[\t ]+Port[\t ]+[%+-]/) { + if (($0 ~ /%z/) == (DATAFORM == "vanguard")) { uncomment = in_comment } else { comment_out = !in_comment @@ -164,8 +165,8 @@ DATAFORM != "main" { sub(/-00CHANGE-TO-%z/, "-00") sub(/[-+][^\t ]+CHANGE-TO-/, "") } else { - if (/^[^#]*%z/) { - stdoff_column = 2 * /^Zone/ + 1 + if ($0 ~ /^[^#]*%z/) { + stdoff_column = 2 * ($0 ~ /^Zone/) + 1 rules_column = stdoff_column + 1 stdoff = get_minutes($stdoff_column) rules = $rules_column @@ -184,9 +185,9 @@ DATAFORM != "main" { dstoff = 20 } else if (((rules == "Cook" || rules == "LH") && NF == 3) \ || (rules == "Uruguay" \ - && /[\t ](1942 Dec 14|1960|1970|1974 Dec 22)$/)) { + && $0 ~ /[\t ](1942 Dec 14|1960|1970|1974 Dec 22)$/)) { dstoff = 30 - } else if (rules == "Uruguay" && /[\t ]1974 Mar 10$/) { + } else if (rules == "Uruguay" && $0 ~ /[\t ]1974 Mar 10$/) { dstoff = 90 } else { dstoff = 60 @@ -222,7 +223,7 @@ DATAFORM != "main" { stdoff_subst[1] = rounded_stdoff } } else if (stdoff_subst[0]) { - stdoff_column = 2 * /^Zone/ + 1 + stdoff_column = 2 * ($0 ~ /^Zone/) + 1 stdoff_column_val = $stdoff_column if (stdoff_column_val == stdoff_subst[0]) { sub(stdoff_subst[0], stdoff_subst[1]) @@ -233,7 +234,7 @@ DATAFORM != "main" { # In rearguard form, change the Japan rule line with "Sat>=8 25:00" # to "Sun>=9 1:00", to cater to zic before 2007 and to older Java. - if (/^Rule/ && $2 == "Japan") { + if ($0 ~ /^Rule/ && $2 == "Japan") { if (DATAFORM == "rearguard") { if ($7 == "Sat>=8" && $8 == "25:00") { sub(/Sat>=8/, "Sun>=9") @@ -250,7 +251,7 @@ DATAFORM != "main" { # In rearguard form, change the Morocco lines with negative SAVE values # to use positive SAVE values. if ($2 == "Morocco") { - if (/^Rule/) { + if ($0 ~ /^Rule/) { if ($4 ~ /^201[78]$/ && $6 == "Oct") { if (DATAFORM == "rearguard") { sub(/\t2018\t/, "\t2017\t") @@ -290,8 +291,10 @@ DATAFORM != "main" { /^Zone/ { packrat_ignored = FILENAME == PACKRATDATA && PACKRATLIST && !packratlist[$2]; } -packrat_ignored && !/^Rule/ { - sub(/^/, "#") +{ + if (packrat_ignored && $0 !~ /^Rule/) { + sub(/^/, "#") + } } # If a Link line is followed by a Link or Zone line for the same data, comment diff --git a/zone1970.tab b/zone1970.tab index 3e1948cbb741..19515f7ab60c 100644 --- a/zone1970.tab +++ b/zone1970.tab @@ -351,3 +351,27 @@ VN +1045+10640 Asia/Ho_Chi_Minh Vietnam (south) VU -1740+16825 Pacific/Efate WS -1350-17144 Pacific/Apia ZA,LS,SZ -2615+02800 Africa/Johannesburg +# +# The next section contains experimental tab-separated comments for +# use by user agents like tzselect that identify continents and oceans. +# +# For example, the comment "#@AQAntarctica/" means the country code +# AQ is in the continent Antarctica regardless of the Zone name, +# so Pacific/Auckland should be listed under Antarctica as well as +# under the Pacific because its line's country codes include AQ. +# +# If more than one country code is affected each is listed separated +# by commas, e.g., #@IS,SHAtlantic/". If a country code is in +# more than one continent or ocean, each is listed separated by +# commas, e.g., the second column of "#@CY,TRAsia/,Europe/". +# +# These experimental comments are present only for country codes where +# the continent or ocean is not already obvious from the Zone name. +# For example, there is no such comment for RU since it already +# corresponds to Zone names starting with both "Europe/" and "Asia/". +# +#@AQ Antarctica/ +#@IS,SH Atlantic/ +#@CY,TR Asia/,Europe/ +#@SJ Arctic/ +#@CC,CX,KM,MG,YT Indian/