* asia (Asia/Bahrain): Now links to Asia/Qatar.
(Asia/Kuwait, Asia/Aden): Now links to Asia/Riyadh.
(Asia/Muscat): Now links to Asia/Dubai.
* backzone: Move the old data here.
* checktab.awk (tztab): Remove special cases for these zones.
* NEWS: Document the above.
Explanation:
GNU awk fails when a user-defined-functions is called with a space like in
'myUDF ()'. It does not fail when calling builtin functions, but removed
those spaces too.
Example code:
good_awk='function echo(x) { return x; } BEGIN { print echo("x"); }'
bad_awk_='function echo(x) { return x; } BEGIN { print echo ("x"); }'
sin_awk='BEGIN { print sin (0) }'
mawk -W version 2>/dev/null | head -n1
mawk "${sin_awk}"
mawk "${good_awk}"
mawk "${bad_awk_}"
gawk -V | head -n1
gawk "${sin_awk}"
gawk "${good_awk}"
gawk "${bad_awk_}"
Output:
mawk 1.3.4 20141027
0
x
x
GNU Awk 4.0.2
0
x
gawk: cmd. line:1: error: function `echo' called with space between name
and `(',
* europe (Iceland, Atlantic/Reykjavik):
Correct entries for 1939, 1921, 1919, and 1837-1907.
Coalesce some other entries, for simplicity.
* NEWS: Document this.
When using gawk and Posix TZ in tzselect, this warning is shown:
awk: cmd. line:1: warning: escape sequence `\.' treated as plain `.'
gawk treats '\.' as '.'
mawk treats '\.' as '\.'
both treat '\\.' as '\\.'
The 2nd and 3rd are corrrect for 'Mm.w.d'.
Test:
gawk 'BEGIN{ date = "\."; print date }'
gawk 'BEGIN{ date = "\\."; print date }'
versus:
mawk 'BEGIN{ date = "\."; print date }'
mawk 'BEGIN{ date = "\\."; print date }'
* tzselect.ksh (date): Fix bug that broke POSIX TZ checking with gawk.
* NEWS: Document this.
Problem reported by Stephen Colebourne in:
http://mm.icann.org/pipermail/tz/2014-November/021888.html
* backward (Africa/Asmera): Link to Africa/Nairobi,
not to Africa/Asmara.
* backzone (Africa/Asmera): New link, to override 'backward'.
* NEWS: Document fixes.
This problem has come up before, and it's time to add a check to
catch this common error.
* Makefile (AWK_SCRIPTS): Add checklinks.awk.
(check, .PHONY): Add check_links.
(check_links): New rule.
* checklinks.awk: New file.
* localtime.c (settzname): Move scrubbing into ...
(scrub_abbrs): ... this new function.
(zoneinit): Use it here, rather than in settzname.
* NEWS: Document this.
* africa (Africa/Addis_Ababa, Africa/Asmara, Africa/Dar_es_Salaam)
(Africa/Djibouti, Africa/Kampala, Africa/Mogadishu, Indian/Antananarivo)
(Indian/Comoro, Indian/Mayotte):
Change these from zones to links to Africa/Nairobi.
* backzone: Move the old data here.
* checktab.awk (tztab): Remove special cases for these zones.
* NEWS: Document the above.
* africa, asia, australasia, backzone, europe, northamerica:
* southamerica, tz-link.htm: Be less enthusiastic about Shanks.
* tz-link.htm: Be clearer about UT vs UTC.
* NEWS: Document this.
(Thanks to Sanghyuk Jung.)
* asia (ROK): Add entries for 1948-1959 and correct entries
for 1987-1988.
(Asia/Seoul): Correct entries through 1962.
(Asia/Pyongyang): Guess no change since World War II.
* NEWS: Document this.
I obtained a copy of Trần Tiến Bình's 2005 book "Lịch Việt Nam:
thế kỷ XX-XXI (1901-2100)", verified that www.thoigian.com.vn's
page is a verbatim quote of a passage in pages 45-50, and added a
list of Trần's sources for his pp 49-50.
(Thanks to Ken Rylander for the heads-up.)
* australasia (Fiji): Assume Nov Sun>=1 2:00 to Jan Sun>=18 3:00
from here on out.
* newtzset.3: Adjust Fiji example to match current assumptions.
* NEWS: Document this.
Christos Zoulas reported a crash due to a tzsetlcl failure to
initialize data in some places, and requested that errno be set
when time functions fail; see:
http://mm.icann.org/pipermail/tz/2014-October/021754.html
While fixing this in a different way, I noticed and fixed another
instance of undefined behavior when read returns a too-small value.
* NEWS: Document this.
* localtime.c (union input_buffer): Rename from u_t.
(union input_buffer, union local_storage):
Move to top level so that two functions can use them.
(tzloadbody): New function, with most of the body of the old tzload.
Check for short reads that leave uninitialized buffers behind.
Define a new constant TZHEADSIZE for this, and use it to simplify
other code that already uses the concept.
(tzload): Use it. This removes the need for gotos. Return an errno
value; all callers changed.
(zoneinit): Return bool, not struct state *. Assume SP is nonnull.
All callers changed.
(zoneinit, tzalloc): Set errno on failure.
(tzsetlcl): Don't crash if zoneinit fails.
* private.h (ENAMETOOLONG): Define if not already defined.
This is for the part of Papua New Guinea that plans to switch from
UTC+10 to UTC+11 on 2014-12-28 at 02:00. (Thanks to Kiley Walbom
for the heads-up.)
* australasia (Pacific/Bougainville): New zone.
* zone.tab, zone1970.tab: Add entries for it.
* NEWS: Document this.
See: http://mm.icann.org/pipermail/tz/2014-October/021692.html
* asctime.c (asctime_r): Remove now-unnecessary EOVERFLOW ifdef.
* localtime.c (timesub): Set errno to EOVERFLOW on overflow.
POSIX requires this.
(ctime, ctime_r): Return NULL instead of having undefined behavior
when the time stamp is out of struct tm range. NetBSD does this,
the standards allow it, and it's nicer for users.
* private.h (EOVERFLOW): Default to EINVAL on ancient hosts that lack it.
* NEWS: Document this.
in: http://mm.icann.org/pipermail/tz/2014-October/021684.html
* localtime.c (tzload): Use ssize_t, not int. Redo comparison to
avoid the need for an ssize_t value less than -1, which POSIX does
not guarantee. Use memmove so that we needn't worry about an
ssize_t index.
(tzparse): Remove static always-zero var. Initialized fields
to zero by hand instead.
(zoneinit): Initialized more fields, to avoid undefined behavior
in tzalloc.
(leapcorr): Fix bug, a stray initialization of a local variable.
* Makefile: Add comment about ssize_t.
* NEWS: Document the above.