Skip to content

Commit

Permalink
Squashed 'tz/' changes from d3dc2a9d6..9baf0d34d
Browse files Browse the repository at this point in the history
4e604e411 Release 2022g
b92f566d6 The northern edge of Chihuahua changes to US rules
36acd567f Greenland change should affect only America/Nuuk
6443cc1b3 * backzone: Recommend a patch format.
76ca2b309 Fix Singapore 1981/2 time zone change
897c2968f * zic.8: Work better with Solaris 10 troff.
9b71469c5 * date.1: Change one more CW to CR.
6f94ec99e * zic.8: Port \(ha \(ga \(ti back to old troff
caf02839f * zic.8: Port \(aq back to old troff.
220c21f6b Use CR font instead of CW
2fb292264 Most of Greenland stops clock-changing after March
7adffa0cd Put public-domain notices at man page starts
df13da715 A few more caps and apostrophe fixes
02e725891 Use lower case page titles for commands
b93c3f012 zic.8: Use correct escape sequences instead of special characters
7c6c20ebe Fix Singapore 1981/2 time zone change
b8b937ac2 Use C23 [[fallthrough]] if available
afcf8d223 Use C23 [[unsequenced]] if available
d64e85f4d Use C23 [[reproducible]] if available.
de0a1a51c Pacify gcc -std=c89 -pedantic with new attributes
dbfcefe0c Use C23 [[noreturn]] if available
15c01af93 Omit unnecessary double-underscores
53b3f12f9 Use C23 [[maybe_unused]] if available
57b8fc957 Prefer <stdckdint.h> for overflow checking
82889559c Fix another theoretical zic.c overflow
2d933eafb Fix theoretical integer overflow in zic.c
dcc6bcf06 Improve integer overflow checking in zdump
50a255193 date: integer overflow fixes
f55f17a28 Fix size_t overflow check if SIZE_MAX == INT_MAX
1d7ab5621 Don’t assume INT_MAX < UINT_FAST64_MAX
c49f08703 Avoid some size_t values in localtime.c
ad10807c7 Refactor zic overflow checking
8e303be7a Refactor zic to simplify overflow checking
1f15b7cd4 Minor time2sub refactor
cc8291361 Simplify inputline return value
43faca98a * NEWS: Deprecate C89.
b5a8115da Port int_fast64_t to C89 64-bit long
8b1c6abf9 Port UINT_FAST64_MAX back to C89
85a4b4ac6 Port to C89 gcc -pedantic
f4ca780b5 Improve NEWS "Briefly" summary
1d1aa38f9 Change TF spelling in iso3166.tab
bc2942ecb Colombia’s 1993 fallback was 02-06 24:00
aaca8fad7 * localtime.c (mktmcpy): Fix misplaced ‘const’.
dd0ed4e11 Support timegm by default, as per C23
40c12e6e4 * strftime.c: Improve comment.
6c713aecc Port mktime and strftime to strict C
bc4e7f00b Generate nicer 'make check' output
9c0117326 * northamerica: pacify 'make check_character_set'
3609abf3e * northamerica: Fix comment typo in last change.
45ee615e8 Fix some pre-1996 timestamps in northern Canada
f4808ee8f Fix unlikely conversion bug in zic
4a69a067a Rename ecpyalloc to estrdup
f10493358 Port to AIX 6.1 malloc
b4253bbe8 Add NEWS item for previous patch
ee3ddc6c2 Work around MS-Windows nmake bug
377e31128 Revert change re default HAVE_GETTEXT on macOS
317cc2c05 Port better to old Linux kernels
71958dd87 Require explicit -DHAVE_GETTEXT on macOS
841183210 Pacify compilers re #undef HAVE_GETRANDOM
2a18b7474 Make it easier to skip backcheck
0e1616ec0 * africa: Restore Morocco comment (thanks to Stephen Colebourne).
5db8b3ba4 Fix GET_RANDOM default on macOS
359a7ae00 Update Mexico comments some more
9f1f40cd6 Update Mexico zone table comments
b03713259 Don’t assume nonempty argv
f4c096760 * NEWS: Remove incorrect comment re musl.
dbe87fe42 Port struct tm guessing to musl
a91830b78 Fix tzalloc bug on platforms lacking tm_zone
5600d65e2 * theory.html: Mazatlan no longer observes DST.
e5a71615d * NEWS: Credit gera.

git-subtree-dir: tz
git-subtree-split: 9baf0d34d95174cb9a3cfd9cb17dd9a18609a358
  • Loading branch information
stub42 committed Dec 18, 2022
1 parent 5797f88 commit 3a52798
Show file tree
Hide file tree
Showing 28 changed files with 868 additions and 422 deletions.
55 changes: 34 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ PACKRATLIST=
UTF8_LOCALE= en_US.utf8

# Non-default libraries needed to link.
# On some hosts, this should have -lintl unless CFLAGS has -DHAVE_GETTEXT=0.
LDLIBS=

# Add the following to the end of the "CFLAGS=" line as needed to override
Expand All @@ -208,14 +209,18 @@ LDLIBS=
# For example, N is 252460800 on AmigaOS.
# -DHAVE_DECL_ASCTIME_R=0 if <time.h> does not declare asctime_r
# -DHAVE_DECL_ENVIRON if <unistd.h> declares 'environ'
# -DHAVE_DECL_TIMEGM=0 if <time.h> does not declare timegm
# -DHAVE_DIRECT_H if mkdir needs <direct.h> (MS-Windows)
# -DHAVE_GENERIC=0 if _Generic does not work
# -DHAVE_GETRANDOM if getgrandom works (e.g., GNU/Linux)*
# -DHAVE_GETTEXT if 'gettext' works (e.g., GNU/Linux, FreeBSD, Solaris)*
# -DHAVE_GENERIC=0 if _Generic does not work*
# -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux),
# -DHAVE_GETRANDOM=0 to avoid using getrandom
# -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris),
# where LDLIBS also needs to contain -lintl on some hosts;
# -DHAVE_GETTEXT=0 to avoid using gettext
# -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares
# ctime_r and asctime_r incompatibly with the POSIX standard
# (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined).
# -DHAVE_INTTYPES_H if you have a non-C99 compiler with <inttypes.h>
# -DHAVE_INTTYPES_H=0 if <inttypes.h> does not work*
# -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
Expand All @@ -225,15 +230,17 @@ LDLIBS=
# functions like 'link' or variables like 'tzname' required by POSIX
# -DHAVE_SETENV=0 if your system lacks the setenv function
# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function
# -DHAVE_STDINT_H if you have a non-C99 compiler with <stdint.h>*
# -DHAVE_STDCKDINT_H=0 if neither <stdckdint.h> nor substitutes like
# __builtin_add_overflow work*
# -DHAVE_STDINT_H=0 if <stdint.h> does not work*
# -DHAVE_STRFTIME_L if <time.h> declares locale_t and strftime_l
# -DHAVE_STRDUP=0 if your system lacks the strdup function
# -DHAVE_STRTOLL=0 if your system lacks the strtoll function
# -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_STAT_H=0 if <sys/stat.h> does not work*
# -DHAVE_TZSET=0 if your system lacks a tzset function
# -DHAVE_UNISTD_H=0 if your compiler lacks a <unistd.h>*
# -DHAVE_UTMPX_H=0 if your compiler lacks a <utmpx.h>*
# -DHAVE_UNISTD_H=0 if <unistd.h> does not work*
# -DHAVE_UTMPX_H=0 if <utmpx.h> does not work*
# -Dlocale_t=XXX if your system uses XXX instead of locale_t
# -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers
# with external linkage, e.g., applications cannot define 'localtime'.
Expand Down Expand Up @@ -280,7 +287,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
-Wdeclaration-after-statement -Wdouble-promotion \
-Wduplicated-branches -Wduplicated-cond \
-Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
-Winit-self -Wlogical-op \
-Wimplicit-fallthrough=5 -Winit-self -Wlogical-op \
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
-Wnull-dereference \
-Wold-style-definition -Woverlength-strings -Wpointer-arith \
Expand All @@ -293,7 +300,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
-Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
-Wvariadic-macros -Wvla -Wwrite-strings \
-Wno-address -Wno-format-nonliteral -Wno-sign-compare \
-Wno-type-limits -Wno-unused-parameter
-Wno-type-limits
#
# If your system has a "GMT offset" field in its "struct tm"s
# (or if you decide to add such a field in your system's "time.h" file),
Expand Down Expand Up @@ -340,14 +347,11 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
# If you want functions that were inspired by early versions of X3J11's work,
# add
# -DSTD_INSPIRED
# to the end of the "CFLAGS=" line. This arranges for the functions
# "offtime", "timelocal", "timegm", "timeoff",
# "posix2time", and "time2posix" to be added to the time conversion library.
# to the end of the "CFLAGS=" line. This arranges for the following
# functions to be added to the time conversion library.
# "offtime" is like "gmtime" except that it accepts a second (long) argument
# that gives an offset to add to the time_t when converting it.
# "timelocal" is equivalent to "mktime".
# "timegm" is like "timelocal" except that it turns a struct tm into
# a time_t using UT (rather than local time as "timelocal" does).
# "timeoff" is like "timegm" except that it accepts a second (long) argument
# that gives an offset to use when converting to a time_t.
# "posix2time" and "time2posix" are described in an included manual page.
Expand Down Expand Up @@ -495,6 +499,11 @@ TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \
# Flags to give 'gzip' when making a distribution.
GZIPFLAGS= -9n
# When comparing .tzs files, use GNU diff's -F'^TZ=' option if supported.
# This makes it easier to see which Zone has been affected.
DIFF_TZS= diff -u$$(! diff -u -F'^TZ=' - - <>/dev/null >&0 2>&1 \
|| echo ' -F^TZ=')
###############################################################################
#MAKE= make
Expand Down Expand Up @@ -773,7 +782,8 @@ tzselect: tzselect.ksh version
chmod +x $@.out
mv $@.out $@
check: check_character_set check_white_space check_links \
check: check_back check_mild
check_mild: check_character_set check_white_space check_links \
check_name_lengths check_slashed_abbrs check_sorted \
check_tables check_web check_ziguard check_zishrink check_tzs
Expand Down Expand Up @@ -824,16 +834,19 @@ check_slashed_abbrs: $(TDATA_TO_CHECK)
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/ {printf "%.5d %s\n", g, $$3} /^$$/ {g++}' \
$(AWK) '/^Link/ {printf "%.5d %s\n", g, $$3} !/./ {g++}' \
backward | LC_ALL=C sort -cu
$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
touch $@
check_links: checklinks.awk $(TDATA_TO_CHECK) tzdata.zi
check_back: checklinks.awk $(TDATA_TO_CHECK)
$(AWK) \
-v DATAFORM=$(DATAFORM) \
-v backcheck=backward \
-f checklinks.awk $(TDATA_TO_CHECK)
touch $@
check_links: checklinks.awk tzdata.zi
$(AWK) \
-v DATAFORM=$(DATAFORM) \
-f checklinks.awk tzdata.zi
Expand All @@ -849,7 +862,7 @@ check_tables: checktab.awk $(YDATA) backward $(ZONETABLES)
check_tzs: $(TZS) $(TZS_NEW)
if test -s $(TZS); then \
diff -u $(TZS) $(TZS_NEW); \
$(DIFF_TZS) $(TZS) $(TZS_NEW); \
else \
cp $(TZS_NEW) $(TZS); \
fi
Expand Down Expand Up @@ -1050,7 +1063,7 @@ $(TIME_T_ALTERNATIVES): $(VERSION_DEPS)
TZS_YEAR="$$range" TZS_CUTOFF_FLAG="-t $$range" \
D=$$wd/[email protected] \
to$$range.tzs) && \
diff -u $(TIME_T_ALTERNATIVES_HEAD).dir/to$$range.tzs \
$(DIFF_TZS) $(TIME_T_ALTERNATIVES_HEAD).dir/to$$range.tzs \
[email protected]/to$$range.tzs && \
if diff -q Makefile Makefile 2>/dev/null; then \
quiet_option='-q'; \
Expand Down Expand Up @@ -1220,7 +1233,7 @@ zdump.o: version.h
zic.o: private.h tzfile.h version.h
.PHONY: ALL INSTALL all
.PHONY: check check_time_t_alternatives
.PHONY: check check_mild check_time_t_alternatives
.PHONY: check_web check_zishrink
.PHONY: clean clean_misc dummy.zd force_tzs
.PHONY: install install_data maintainer-clean names
Expand Down
89 changes: 88 additions & 1 deletion NEWS
Original file line number Diff line number Diff line change
@@ -1,5 +1,91 @@
News for the tz database

Release 2022g - 2022-11-29 08:58:31 -0800

Briefly:
The northern edge of Chihuahua changes to US timekeeping.
Much of Greenland stops changing clocks after March 2023.
Fix some pre-1996 timestamps in northern Canada.
C89 is now deprecated; please use C99 or later.
Portability fixes for AIX, libintl, MS-Windows, musl, z/OS
In C code, use more C23 features if available.
C23 timegm now supported by default
Fixes for unlikely integer overflows

Changes to future timestamps

In the Mexican state of Chihuahua, the border strip near the US
will change to agree with nearby US locations on 2022-11-30.
The strip's western part, represented by Ciudad Juárez, switches
from -06 all year to -07/-06 with US DST rules, like El Paso, TX.
The eastern part, represented by Ojinaga, will observe US DST next
year, like Presidio, TX. (Thanks to Heitor David Pinto.)
A new Zone America/Ciudad_Juarez splits from America/Ojinaga.

Much of Greenland, represented by America/Nuuk, stops observing
winter time after March 2023, so its daylight saving time becomes
standard time. (Thanks to Jonas Nyrup and Jürgen Appel.)

Changes to past timestamps

Changes for pre-1996 northern Canada (thanks to Chris Walton):

Merge America/Iqaluit and America/Pangnirtung into the former,
with a backward compatibility link for the latter name.
There is no good evidence the two locations differ since 1970.
This change affects pre-1996 America/Pangnirtung timestamps.

Cambridge Bay, Inuvik, Iqaluit, Rankin Inlet, Resolute and
Yellowknife did not observe DST in 1965, and did observe DST
from 1972 through 1979.

Whitehorse moved from -09 to -08 on 1966-02-27, not 1967-05-28.

Colombia's 1993 fallback was 02-06 24:00, not 04-04 00:00.
(Thanks to Alois Treindl.)

Singapore's 1981-12-31 change was at 16:00 UTC (23:30 local time),
not 24:00 local time. (Thanks to Geoff Clare via Robert Elz.)

Changes to code

Although tzcode still works with C89, bugs found in recent routine
maintenance indicate that bitrot has set in and that in practice
C89 is no longer used to build tzcode. As it is a maintenance
burden, support for C89 is planned to be removed soon. Instead,
please use compilers compatible with C99, C11, C17, or C23.

timegm, which tzcode implemented in 1989, will finally be
standardized 34 years later as part of C23, so timegm is now
supported even if STD_INSPIRED is not defined.

Fix bug in zdump's tzalloc emulation on hosts that lack tm_zone.
(Problem reported by Đoàn Trần Công Danh.)

Fix bug in zic on hosts where malloc(0) yields NULL on success.
(Problem reported by Tim McBrayer for AIX 6.1.)

Fix zic configuration to avoid linkage failures on some platforms.
(Problems reported by Gilmore Davidson and Igor Ivanov.)

Work around MS-Windows nmake incompatibility with POSIX.
(Problem reported by Manuela Friedrich.)

Port mktime and strftime to debugging platforms where accessing
uninitialized data has undefined behavior (strftime problem
reported by Robert Elz).

Check more carefully for unlikely integer overflows, preferring
C23 <stdckdint.h> to overflow checking by hand, as the latter has
had obscure bugs.

Changes to build procedure

New Makefile rule check_mild that skips checking whether Link
lines are in the file 'backward'. (Inspired by a suggestion from
Stephen Colebourne.)


Release 2022f - 2022-10-28 18:04:57 -0700

Briefly:
Expand All @@ -16,14 +102,15 @@ Release 2022f - 2022-10-28 18:04:57 -0700
In C code, use some C23 features if available.
Remove no-longer-needed workaround for Qt bug 53071.

Changes to future timestamps.
Changes to future timestamps

Mexico will no longer observe DST after 2022, except for areas
near the US border that continue to observe US DST rules.
On 2022-10-30 at 02:00 the Mexican state of Chihuahua moves
from -07 (-06 with DST) to year-round -06, thus not changing
its clocks that day. The new law states that Chihuahua
near the US border no longer observes US DST.
(Thanks to gera for the heads-up about Chihuahua.)

Fiji will not observe DST in 2022/3. (Thanks to Shalvin Narayan.)
For now, assume DST is suspended indefinitely.
Expand Down
4 changes: 4 additions & 0 deletions africa
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,10 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
# Agalega Is, Rodriguez
# no information; probably like Indian/Mauritius


# Morocco
# See Africa/Ceuta for Spanish Morocco.

# From Alex Krivenyshev (2008-05-09):
# Here is an article that Morocco plan to introduce Daylight Saving Time between
# 1 June, 2008 and 27 September, 2008.
Expand Down
2 changes: 1 addition & 1 deletion asia
Original file line number Diff line number Diff line change
Expand Up @@ -3585,7 +3585,7 @@ Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
7:20 - +0720 1941 Sep 1
7:30 - +0730 1942 Feb 16
9:00 - +09 1945 Sep 12
7:30 - +0730 1982 Jan 1
7:30 - +0730 1981 Dec 31 16:00u
8:00 - +08

# Spratly Is
Expand Down
1 change: 1 addition & 0 deletions backward
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ Link America/Tijuana America/Ensenada
Link America/Indiana/Indianapolis America/Fort_Wayne
Link America/Toronto America/Montreal
Link America/Toronto America/Nipigon
Link America/Iqaluit America/Pangnirtung
Link America/Rio_Branco America/Porto_Acre
Link America/Winnipeg America/Rainy_River
Link America/Argentina/Cordoba America/Rosario
Expand Down
55 changes: 54 additions & 1 deletion backzone
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
# [email protected] for general use in the future). For more, please see
# the file CONTRIBUTING in the tz distribution.

# When proposing changes to this file, please use 'git format-patch'
# format, either by attaching the resulting .patch file to your email,
# or by using 'git send-email'. This will help maintainers save time.


# From Paul Eggert (2014-10-31):

Expand Down Expand Up @@ -750,6 +754,55 @@ Zone America/Nipigon -5:53:04 - LMT 1895
-5:00 1:00 EDT 1942 Feb 9 2:00s
-5:00 Canada E%sT

# From Rives McDow (1999-11-08):
# On October 31, when the rest of Nunavut went to Central time,
# Pangnirtung wobbled. Here is the result of their wobble:
#
# The following businesses and organizations in Pangnirtung use Central Time:
#
# First Air, Power Corp, Nunavut Construction, Health Center, RCMP,
# Eastern Arctic National Parks, A & D Specialist
#
# The following businesses and organizations in Pangnirtung use Eastern Time:
#
# Hamlet office, All other businesses, Both schools, Airport operator
#
# This has made for an interesting situation there, which warranted the news.
# No one there that I spoke with seems concerned, or has plans to
# change the local methods of keeping time, as it evidently does not
# really interfere with any activities or make things difficult locally.
# They plan to celebrate New Year's turn-over twice, one hour apart,
# so it appears that the situation will last at least that long.
# The Nunavut Intergovernmental Affairs hopes that they will "come to
# their senses", but the locals evidently don't see any problem with
# the current state of affairs.

# From Michaela Rodrigue, writing in the
# Nunatsiaq News (1999-11-19):
# http://www.nunatsiaqonline.ca/archives/nunavut991130/nvt91119_17.html
# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
# central - or Nunavut time - for government offices, and eastern time
# for municipal offices and schools.... Igloolik [was similar but then]
# made the switch to central time on Saturday, Nov. 6.

# From Chris Walton (2022-11-06):
# The implication is that Pangnirtung and Qikiqtarjuaq have observed Eastern
# Time as far back as 1984 (and likely even further back than that).
# It is possible that these communities never actually observed Atlantic
# Time, but that would be difficult to prove.
# From Paul Eggert (2022-11-06):
# This is in 'backzone' as we have no good evidence that Pangnirtung differs
# from America/Iqaluit since 1970. A Google Books snippet view of
# volume 2, page 186 of "Pilot of Arctic Canada", published 1959 by
# the Canadian Hydrographic Service, suggests (though does not state)
# that Pangnirtung observed EST then.
#
# aka Panniqtuuq
Zone America/Pangnirtung 0 - -00 1921 # trading post est.
-5:00 NT_YK E%sT 1999 Oct 31 2:00
-6:00 Canada C%sT 2000 Oct 29 2:00
-5:00 Canada E%sT

# United States
#
# From Paul Eggert (2018-03-18):
Expand Down Expand Up @@ -1043,7 +1096,7 @@ Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
7:20 - +0720 1941 Sep 1
7:30 - +0730 1942 Feb 16
9:00 - +09 1945 Sep 12
7:30 - +0730 1982 Jan 1
7:30 - +0730 1981 Dec 31 16:00u
8:00 - +08

# Kuwait
Expand Down
8 changes: 4 additions & 4 deletions date.1
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
.TH DATE 1
.\" This file is in the public domain, so clarified as of
.\" 2009-05-17 by Arthur David Olson.
.TH date 1
.SH NAME
date \- show and set date and time
.SH SYNOPSIS
.if n .nh
.if n .na
.ie \n(.g .ds - \f(CW-\fP
.ie \n(.g .ds - \f(CR-\fP
.el .ds - \-
.B date
[
Expand Down Expand Up @@ -163,5 +165,3 @@ If
is absent,
UTC leap seconds are loaded from
.BR /usr/share/zoneinfo/posixrules .
.\" This file is in the public domain, so clarified as of
.\" 2009-05-17 by Arthur David Olson.
Loading

0 comments on commit 3a52798

Please sign in to comment.