(Thanks to Alan Barrett for the suggestion.)
* Makefile (SOURCES): Move workman.sh here, from $(MISC).
(COMMON): Move NEWS here, from $(DOCS).
(tzdata$(VERSION).tar.gz): Move $(MISC) here, from
tzcode$(VERSION).tar.gz.
* NEWS: Document the above.
* Makefile (check_white_space): Rename from check_tabs; all uses
changed. Also check for trailing white space and for oddball
ASCII white space characters.
(Thanks to Stephen Colebourne for a heads-up about the decree.)
* africa (Africa/Luanda, Africa/Bissau):
Change transition date to 1912-01-01.
(Atlantic/Cape_Verde, Africa/Maputo):
Add commentary about the switch.
* asia (Asia/Kolkata): Add commentary about Portuguese India.
* europe (Europe/Lisbon): Change Lisbon Mean Time from -0:36:32
to -0:36:45 (rounded from -0:36:44.68).
(Atlantic/Azores, Atlantic/Madeira):
Change transition date to 1912-01-01.
* NEWS: Document the above.
In particular, this patch is makes the commentary more systematic
about preferring "time zone" to "timezone" except when quoting someone
else or when talking about code that uses "timezone".
This harmless bug was introduced in release 2014f, which distributed
leapseconds.awk in both the code and the data tarballs.
It's code, so it should be in the code tarball.
* Makefile (DATA): Omit leapseconds.awk.
(check_character_set): Omit redundant check of $(LEAP_DEPS).
(Thanks to Vladimir Karpinsky.)
* asia (Asia/Tbilisi, Asia/Samarkand):
* europe (Europe/Riga, Europe/Samara, Asia/Yekaterinburg, Asia/Omsk)
(Asia/Krasnoyarsk, Asia/Irkutsk, Asia/Yakutsk, Asia/Vladivostok):
Match Byalokoz 1919 better.
* NEWS: Document the above.
This should better address concerns about large-scale changes.
We can do the rest of these changes later, as they're not urgent.
* backward (Africa/Asmera, Asia/Saigon): Restore old links.
* checktab.awk (tztab): Handle zones that should probably be
turned into links some day.
* africa (Africa/Luanda, Africa/Porto-Novo, Africa/Gaborone)
(Africa/Bujumbura, Africa/Douala, Africa/Bangui, Indian/Comoro)
(Africa/Kinshasa, Africa/Lubumbashi, Africa/Brazzaville)
(Africa/Djibouti, Africa/Malabo, Africa/Asmara, Africa/Addis_Ababa)
(Africa/Libreville, Africa/Maseru, Indian/Antananarivo)
(Africa/Blantyre, Indian/Mayotte, Africa/Niamey, Africa/Kigali)
(Africa/Mogadishu, Africa/Mbabane, Africa/Dar_es_Salaam)
(Africa/Kampala, Africa/Lusaka, Africa/Harare):
* asia (Asia/Bahrain, Asia/Phnom_Penh, Asia/Kuwait)
(Asia/Vientiane, Asia/Muscat, Asia/Ho_Chi_Minh, Asia/Aden):
* australasia (Pacific/Saipan, Pacific/Midway):
* northamerica, southamerica (America/Antigua, America/Cayman):
New zones, restoring 2014e data. Corresponding links removed.
* NEWS: Document the above.
It allows multiple country codes per zone. Switch code and data to
use the new format, along with the recently-added Crozet Islands entry.
The old zone.tab file is still installed but is deprecated.
The new file uses UTF-8; add commentary saying that iso3166.tab is
planned to change to UTF-8.
* Theory, tzselect.8 (FILES): zone.tab -> time.tab.
* africa (Indian/Alfred_Faure): Remove link.
* antarctica: Mention Possession Island in comments.
* checktab.awk: Add support for checking time.tab.
* iso3166.tab: Mention planned switch to UTF-8.
Update ISO 3166-1 Newsletter from VI-15 to VI-16.
* time.tab: New file.
* tzselect.ksh (zonetabtype): New variable.
Add undocumented -t option, meant for developer testing.
(TZ_ZONE_TABLE): Use zonetabtype.
(output_distances, countries, regions, TZ): Support time.tab format.
(quoted_continents, distance_table, countries, regions)
(TZ, TZ_for_date): Quote shell strings more carefully.
* zone.tab: Refer to time.tab for detailed comments about format.
(Indian/Alfred_Faure): Remove.
* Makefile (TIMETABLES): New macro.
(TABDATA, install, check_tables): Use it.
(check_character_set, check_tables): Check time.tab too.
(check_time_t_alternatives): Use time.tab, not zone.tab.
* NEWS: Document the above.
* northamerica (America/Metlakatla): Use the more-common "PST"
rather than our invented "MeST" for the abbreviation. Our source
called it "Pacific Time", as did a contemporaneous news report,
and I couldn't find contemporaneous use of "MeST" or of
"Metlakatla Time". Cite the news report in the commentary,
and quote some Juneau graffiti.
* zone.tab (America/Resolute): Call it Central Time, not Central
Standard Time, since it observes DST now.
(America/Metlakatla): Call it Pacific Standard Time, not
Metlakatla Time. Mention that it's in Alaska.
* NEWS: Document the above.
Revert zone-to-link changes that changed current time zone
abbreviations. Add a few more changes, for more consistency.
Make several other fixes discovered while researching this.
* africa (Africa/Accra, Antarctica/Syowa):
* asia (Pacific/Palau):
* australasia (Pacific/Funafuti, Pacific/Majuro, Pacific/Wake)
(Pacific/Wallis, Antarctica/DumontDUrville, Pacific/Chuuk)
(Pacific/Pohnpei):
* northamerica (Pacific/Tahiti):
Remove links, as they are now zones again.
* africa (Africa/Accra, Africa/Maputo):
* antarctica (Antarctica/DumontDUrville, Antarctica/Syowa):
* australasia (Pacific/Tahiti, Pacific/Majuro, Pacific/Chuuk)
(Pacific/Pohnpei, Pacific/Palau, Pacific/Funafuti, Pacific/Wake)
(Pacific/Wallis):
Restore zone.
* africa (Africa/Accra): Assume DST starting in 1920, as per Scott
Keltie & Epstein 1920.
* asia (Asia/Bahrain, Asia/Phnom_Penh, Asia/Kuwait, Asia/Vientiane)
(Asia/Muscat, Asia/Ho_Chi_Minh, Asia/Aden):
* northamerica (America/Antigua, America/Cayman):
Change from zone to link, as these are also closely related.
* africa (Africa/Blantyre, Africa/Bujumbura, Africa/Gaborone)
(Africa/Harare, Africa/Kigali, Africa/Lubumbashi, Africa/Lusaka):
Now links to Africa/Maputo, not Africa/Johannesburg.
* asia (Asia/Riyadh): Change standard-time transition from 1950
to 1947-03-14. Add commentary citing Hunt 1961 and CAB 1946.
* australasia (Pacific/Chatham): Assume NZST - 45 min. before 1946.
Add commentary about this.
(Pacific/Pago_Pago): UT-11 from 1911 to 1950.
(WS, Pacific/Apia): Use NZ-style abbreviations.
Switch to "WSST" for Western Samoa standard time before 1950.
Add commentary about Samoa before 1950.
* backward (Africa/Asmera, Africa/Timbuktu, Asia/Saigon):
Redo to avoid link-to-link.
* europe (Hungary, Europe/Bucharest): Several pre-1946
corrections: in 1918 the transition out of DST was on 09-16, not
09-29; in 1919 it was on 11-24, not 09-15; in 1945 it was on
11-01, not 11-03; in 1941 the transition to DST was 04-08 not
04-06 at 02:00; and there was no DST in 1920.
(Poland): Add source for 1919.
* southamerica: Add link for America/Antigua.
* NEWS: Document the above. Add some thanks.
* africa (Africa/Luanda, Africa/Porto-Novo, Africa/Gaborone)
(Africa/Ouagadougou, Africa/Bujumbura, Africa/Douala, Africa/Bangui)
(Indian/Comoro, Africa/Kinshasa, Africa/Lubumbashi, Africa/Brazzaville)
(Africa/Djibouti, Africa/Malabo, Africa/Asmara, Africa/Addis_Ababa)
(Africa/Libreville, Africa/Banjul, Africa/Accra, Africa/Conakry)
(Africa/Maseru, Indian/Antananarivo, Africa/Blantyre, Africa/Bamako)
(Africa/Nouakchott, Indian/Mayotte, Africa/Maputo, Africa/Niamey)
(Africa/Kigali, Atlantic/St_Helena, Africa/Sao_Tome, Africa/Dakar)
(Africa/Freetown, Africa/Mogadishu, Africa/Mbabane, Africa/Dar_es_Salaam)
(Africa/Lome, Africa/Kampala, Africa/Lusaka, Africa/Harare):
* antarctica (Antarctica/Syowa):
Remove zone, replacing each with a link to a region that has had
the same UTC offset since 1970.
* NEWS: Document this.
This is like the 2013-09-02 change, but for the Pacific this time.
* antarctica (Antarctica/DumontDUrville):
* australasia (Pacific/Tahiti, Pacific/Saipan, Pacific/Majuro)
(Pacific/Chuuk, Pacific/Pohnpei, Pacific/Palau, Pacific/Funafuti)
(Pacific/Midway, Pacific/Wake, Pacific/Wallis):
Remove zone, replacing each with a link to a region that has had
the same UTC offset since 1970. This removes data that were
largely invented, either by us or almost surely by Shanks or his
sources.
* asia, australasia, northamerica: Create links accordingly.
* NEWS: Document this.
(Thanks to Vladimir Karpinsky for the Moscow corrections.)
Other corrections are taken from Milne 1899.
* asia (Asia/Tbilisi): Change LMT from 2:59:16 to 2:59:06.
(Asia/Tashkent): Change LMT from 4:37:12 to 4:37:11.
* europe (Europe/Helsinki): Change LMT from 1:39:52 to 1:39:49.
(Europe/Riga): Change LMT from 1:36:24 to 1:36:28.
(Europe/Moscow): Change LMT from 2:30:20 to 2:30:17.
Change 1916/9 time from 2:30:48 to 2:31:19.
(Asia/Yekaterinburg): Change LMT from 4:02:24 to 4:02:33.
(Asia/Irkutsk): Change LMT from 6:57:20 to 6:57:15.
(Asia/Vladivostok): Change LMT from 8:47:44 to 8:47:34.
* zone.tab (Europe/Moscow): Use Kilometer 0 point.
* NEWS: Document this.
My best guess is that the Asia/Tiksi entry is a false alarm,
and that the area hasn't diverged from Yakutsk since 1970.
* europe: Move zone.tab comments to zone.tab.
(Asia/Yakutsk): Move comment for Bulunsky district here,
Remove a comment about a draft Asia/Tiksi zone, containing the
Bulunsky district. We don't have sufficient evidence that it
ever diverged from Yakutsk after 1970.
* zone.tab (RU): Reorder entries to make more geographical sense.
Add comments for draft zones Asia/Chita, Asia/Srednekolymsk.
(Europe/Samara, Asia/Novokuznetsk, Asia/Magadan, Asia/Kamchatka)
(Asia/Anadyr): Mention that the Moscow offset changes 2014-10-26.
* NEWS: Document the above.
* europe (Europe/Kaliningrad, Europe/Moscow, Europe/Simferopol)
(Europe/Volgograd, Asia/Yekaterinburg, Asia/Omsk)
(Asia/Novosibirsk, Asia/Irkutsk, Asia/Yakutsk, Asia/Vladivostok):
The transition this fall is at 02:00 local time, not 02:00 Moscow time.
The newspaper report was wrong. Also, add pointers to the bill and to
Krivenyshev's table. (Thanks to Alexander Krivenyshev.)
(Thanks to Yu-Cheng Chuang.) Also, update time zone abbreviations for
Japan's two time zones used 1896-1937. JWST now stands for Western
Standard Time, and JCST for Central Standard Time (formerly this was CJT).
* asia (Taiwan): Omit DST during 1945.
(Asia/Taipei): Add a transition to JWST on 1896-01-01, then to
JST on 1937-10-01, then to CST on 1945-10-25.
(Asia/Tokyo): Rename CJT to JCST. Transition to JCST was 1937-10-01,
not 1938.
(Asia/Seoul, Asia/Pyongyang): Call UT+9 "JCST" until 1937-01-01,
"JST" thereafter. Assume JCST/JST until Allied takeover after WWII.
* NEWS: Document this.
(Thanks to Alexander Krivenyshev.)
* europe: Document FET separately. Add a comment about
whether Zabajkal'skij kraj needs a separate zone.
(Europe/Kaliningrad, Europe/Moscow, Europe/Simferopol, Europe/Volgograd)
(Asia/Yekaterinburg, Asia/Omsk, Asia/Novosibirsk, Asia/Irkutsk)
(Asia/Yakutsk, and Asia/Vladivostok): Subtract an hour from the
time zone on 2014-10-26 at 02:00 Moscow time.
(Europe/Simferopol): Move to after Europe/Moscow, to simplify
similar maintenance in the future.
* NEWS: Document this.
* NEWS, asia: Document this.
* asia (Asia/Harbin, Asia/Chongqing, Asia/Kashgar): Remove.
These are now links in 'backward'.
(Asia/Shanghai): Change pre-standard-time offset from 8:05:57 to
8:05:43. Change transition to standard time from 1928 to 1901.
(Asia/Urumqi): Remove 1980 transition to UTC+8.
* backward (Asia/Harbin, Asia/Chongqing, Asia/Kashgar): New links.
(Asia/Chungking): Avoid link-to-link.
* zone.tab (Asia/Harbin, Asia/Chongqing, Asia/Kashgar): Remove.
* Theory: Use CST instead of EST in the example, so that it matches
the current database.
* antarctica (Antarctica/Casey): AWST, not WST.
* asia (Asia/Jayapura): ACST, not CST.
* australasia: Prepend "[A]" to "EST" in quote about EST.
* NEWS, australasia (Aus, Australia/Darwin, AW, Australia/Perth)
(Australia/Eucla, AQ, Holiday, Australia/Brisbane, Australia/Lindeman)
(AS, Australia/Adelaide, AT, Australia/Hobart, Australia/Currie, AV)
(Australia/Melbourne, AN, Australia/Sydney, Australia/Broken_Hill)
(LH, Australia/Lord_Howe, Antarctica/Macquarie):
Prefix Australian time zone abbreviations with "A", and switch
from "ST" to "DT" to denote daylight saving time. (Thanks to Ian
Abbott, Russ Allbery, Timothy Arceri, Alan Barrett, Stuart Bishop,
Shaun Bouckaert, Stephen Colebourne, Tobias Conradi, Mark Davis,
Robert Elz, Clive D.W. Feather, Dennis Ferguson, Edwin Groothuis,
Guy Harris, John Hawkinson, John Haxby, Brian Inglis, Paul Koning,
Kevin Lyda, Curtis Manwaring, Alan Mintz, Arthur David Olson, Matt
Paine, David Patte, Tim Parenti, random832, Derick Rethans, SM,
Peter Stagg, Rich Tibbett, Bennett Todd, and Garrett Wollman for
their contributions to this topic.)
Using '\-' to denote ASCII minus has problems in groff output, since
it generates a minus sign in the current font, and if you cut and
paste from the documentation the resulting text won't work. To avoid
the problem, define a string \*- that expands to ASCII minus in a
constant-width font in groff. Also, change some instances of \(mi and
\(pl to use plain \- and +, since we no longer need special fonts for
these. Finally, remove some no-longer-needed instances of "\^" after
italicized words.
* tz-link.htm, NEWS: Mention Moment Timezone, TimezoneJS.Date, Walltime-js,
and Timezone. (Thanks to a heads-up from Matt Johnson.) Also, list
license for timezone-olson.
* zic.8, NEWS: Say that "." and ".." file name
components are not allowed in output file names.
* zic.c (componentcheck, namecheck): Do not allow such
file name components.
* zic.c: Use angle brackets for <sys/stat.h>.
(dolink): Don't try to link from a directory, as this can
cause trouble on some systems when superuser.
(dolink, itsdir): Rewrite to avoid use of 'access', which is
problematic when setuid.
(itsdir): If S_ISDIR is defined, use plain 'stat' and S_ISDIR;
that's more reliable. Return -1 if trouble; all callers changed.
(mkdirs): Simplify by using mkdir-itsdir rather than
itsdir-mkdir-itsdir. Don't assume strerror preserves errno.
* zdump.c, zic.c: Don't include <ctype.h>, because the behavior if
its macros is locale-dependent if HAVE_GETTEXT, and we want the C
locale's semantics. Instead, use portable replacements for
ctype.h operations, with the desired semantics. All uses of
isalpha etc. replaced by calls to new functions is_alpha etc. or
by inline code.
(isascii): Remove.
(is_alpha): New function.
* zic.c (doabbr): Simplify by using is_alpha.
(is_space): New function.
* NEWS: Document the above.
* zic.c (componentcheck, namecheck): Warn about all '.'s in
the file name, not merely about "." and ".." file name components.
* zic.8 (DESCRIPTION), NEWS: Document this.
For *.txt files, UTF-8 is not that important, and avoiding it
is better for users with older or misconfigured manpage readers.
* Makefile (check_character_set): Check that *.txt files
contain only safe characters.
($(MANTXTS)): Build *.txt files in the C locale, not in en_US.utf8.
Also, document the longstanding exceptions to POSIX.
Derived from Arthur David Olson's patch in:
http://mm.icann.org/pipermail/tz/2014-June/021052.html
* Theory: Document the exceptional file name components in 'etcetera'
and 'backward' that contain '+' or digits, or are too long.
* zic.8 (DESCRIPTION): Document the change to zic.
* zic.c (component_length_check, namecheck): New functions.
(dolink, writezone): Use them to check that file name components
obey the POSIX rules, and do not contain "." or "..".
* NEWS: Document the above.
* Makefile (NONSYM_CHAR, NONSYM_LINE): New macros.
(SAFE_SHARP_LINE): Don't let comments contain troublesome symbols.
(check_character_set): Don't let troublesome symbols appear in
source files, and don't let non-ASCII appear in .html files.
(Thanks to Garrett Wollman for reporting the problem.)
* NEWS, Theory, northamerica: Add "coding: utf-8" directives so
that GNU Emacs, when run in a unibyte locale, does not mistakenly
interpret these files to be unibyte. This change should make no
difference if you use Emacs to read these files in a UTF-8 locale.
I didn't bother to add coding directives to files where GNU Emacs
already deduces the encoding correctly in a Latin-1 locale.
Garrett Wollman reported privately that XEmacs 21.4.22, the current
stable version, doesn't work with the UTF-8 recently introduced
into our commentary. For example, the UTF-8 character '−'
(MINUS SIGN), which is stored as the three bytes "\342\210\222",
displays as 'â\210\222'. For proper names this is annoying but
tolerable, as there's little loss in utility from (say) 'Racoviță'
to its display form 'RacoviÈ\233Ä\203'. But for symbols this is a
real pain that can make it hard to understand the documentation, e.g.,
'Release 2014e – 2014-06-12 21:53:52 −0700' displays as
'Release 2014e â\200\223 2014-06-12 21:53:52 â\210\2220700'.
To work around this problem, make the following substitutions in
commentary to mostly revert these symbols to their pre-UTF-8 versions:
'§' -> 'section', '°' -> 'degrees', '±' -> '+-', '–' -> '-' (en
dash), '—' -> '--' (em dash), '′' -> "'", '″' -> '"', '→' -> '->',
'−' -> '-' (minus sign), '≤' -> '<='. Leave proper names and
foreign words in UTF-8.
These changes pacify gcc 4.8.2-19ubuntu1 on Ubuntu 14.04,
and take advantage of recently-added GCC options when compiling
with GCC_DEBUG_FLAGS.
* Makefile (GCC_DEBUG_FLAGS): Add -Wdeclaration-after-statement,
-Wjump-misses-init, -Wsuggest-attribute=format.
* date.c (copyright, sccsid):
* strftime.c (sccsid):
Remove unused vars.
* date.c (main):
* localtime.c (tzparse):
Remove no-longer-needed uses of INITIALIZE; GCC is smart enough to
figure these out on its own now.
* localtime.c (gmtsub): Redo initialization of gmt_is_set to pacify GCC.
Retry malloc next time even if it failed this time.
* private.h, zdump.c (GNUC_or_lint): Remove, as it provoked a GCC
diagnostic about unused macros in some cases. Instead, just use
'lint'. All uses removed.
(TZ_DOMAIN): Don't define unless needed, as otherwise it provokes
a GCC diagnostic about unused macros.
* private.h (INITIALIZE): Simplify accordingly.
* NEWS: Document this.
Most of this patch is to commentary, to distinguish better among
the similar characters hyphen '-', minus sign '−', en dash '–' (used
for ranges), and em dash '—'. Render ordinary dashes in text as
spaced en dashes, as this gives better-looking results in monospaced
fonts.
* yearistype.sh, zic.c: Reword diagnostics so that they do not use
hyphens as if they were dashes. Since we are sticking to ASCII in
programs, we can't use proper dashes in diagnostics.
In several cases our text files had commentary like this:
# Egypt to cancel daylight saving time
# <a href="http://www.almasryalyoum.com/en/node/407168">
# http://www.almasryalyoum.com/en/node/407168
# </a>
where lines 2 and 4 let the file be viewed by a browser with the
URL being clickable. In practice this approach does not work with
many modern browsers (I tested with Firefox and with Chrome) and
it clutters up the data, so in cases like the above this patch
removes lines 2 and 4.
(Problem reported by Steffen "Daode" Nurpmeso.)
This was appropriate before Unicode, where "`" and "'" often balanced
in visual output, but that's been obsolete for a while.
Overall, single-quote 'like this' instead of `like this', and
double-quote "like this" or (in typeset output) “like this”
instead of ``like this''. While we're at it, fix some glitches
with hyphens versus minus versus en dash versus em dash.
* Makefile ($(MANTXTS)): Use UTF-8 locale to produce *.txt output.
* checktab.awk, tzselect.ksh:
Quote 'like this' in diagnostics, instead of `like this'.
* date.1, newctime.3, newtzset.3, time2posix.3, zic.8 (q, lq, rq):
New macros. Use them for better double-quoting in output.
* workman.sh: Tell Perl that its stdin and stdout are UTF-8.
* NEWS: Document this.
* localtime.c (time1): Shrink size of 'types' local back down
from TZ_MAX_TIMES to TZ_MAX_TYPES. The smaller value suffices,
since nseen can grow to at most TZ_MAX_TYPES. (Thanks to
Arthur David Olson.)
* NEWS: Remove mention of non-fix.
* localtime.c (tzload) [ALL_STATE]:
Redo to keep the stack frame tiny.
(time1): Shrink sizes of local arrays so that this stack frame
doesn't take much more than about TZ_MAX_TIMES bytes total.
* Makefile (DOCS): Move $(WEB_PAGES) here ...
(MISC): ... from here, so that they can contain UTF-8.
* tz-art.htm, tz-link.htm: Switch to UTF-8 encoding.
Prefer UTF-8 to HTML entities, e.g., prefer '–' to '–'.
* Makefile (INVALID_CHAR1): Rename to SAFE_CHARSET1.
(INVALID_CHAR2): Rename to SAFE_CHARSET2.
(INVALID_CHAR3): Rename to SAFE_CHARSET3.
(INVALID_CHAR): Remove.
(SAFE_CHARSET, SAFE_CHAR, SAFE_LINE, SAFE_SHARP_LINE, VALID_LINE):
New macros.
(check_character_set): Allow any UTF-8 character in some contexts,
including comments in the data, and in some auxiliary commentary files.