* zic.c (outzone): Restore diagnostic that was inadvertently
suppressed by the 2013-09-08 change to the 400-years-hack.
This doesn't affect zic's binary output; it affects only the
diagnostics generated by 'zic -v'. The problem evinced itself
with Asia/Tehran, which currently should generate a diagnostic,
but doesn't without this patch.
* NEWS: Document the above.
MinGW problem reported by Theo Veenker in
<http://mm.icann.org/pipermail/tz/2013-September/020378.html>.
The patched code should work even on POSIXish hosts
where 'link' and 'symlink' fail for whatever reason,
e.g., if the destination file system is VFAT.
Also, the patch fixes some bugs when symlinks are used.
* Makefile (CFLAGS): Mention HAVE_LINK in the comment.
(TZDSRCS): Add asctime.o, since MinGW lacks asctime.
(TZDOBJS): Add asctime.c.
* private.h (HAVE_LINK): Default to 1.
* zic.c (link) [!HAVE_LINK]: New macro.
(symlink) [!HAVE_SYMLINK]: New macro.
(dolink): Fix some bugs when 'link' fails but 'symlink' succeeds.
Fall back on copying when both fail.
* NEWS: Document the above.
Problem with leapseconds reported by Matt Burgess in
<http://mm.icann.org/pipermail/tz/2013-September/020379.html>
with a followup by Ian Abbott in
<http://mm.icann.org/pipermail/tz/2013-September/020383.html>.
* Makefile (MANTXTS): New macro.
(maintainer-clean): Use it.
(DOCS): Add it.
(DATA): Add 'leapseconds'.
(LEAP_DEPS): New macro.
(leapseconds): Use it.
(public): Don't depend on set-timestamps; each tarball does that
individually now, to allow for more parallelization.
(date.1.txt, newctime.3.txt, newstrftime.3.txt, newtzset.3.txt)
(time2posix.3.txt, tzfile.5.txt, tzselect.8.txt, zdump.8.txt)
(zic.8.txt): Depend on the corresponding non-.txt file.
$(MANTXTS): New rule.
(set-timestamps.out): Rename from set-timestamps, and make it a file,
so that it has its own timestamp; this avoids useless rework.
Depend on $(ENCHILADA) and ignore files under Git that are not
also listed in $(ENCHILADA). Set the timestamp of 'leapseconds'
and each $(MANTXTS) to be the maximum of its dependencies, to avoid
timestamp churn in future tarballs. Prefer touch -m, as we don't
care about access time here.
(tzcode$(VERSION).tar.gz, tzdata$(VERSION).tar.gz):
Depend on set-timestamps.out rather than the individual files,
so timestamps are set before creating the tarballs even when
make is parallelized.
(tzcode$(VERSION).tar.gz): Don't mention *.[1-8].txt explicitly,
since we now get $(MANTXTS) via $(DOCS).
* NEWS: Document the above.
* Makefile (COMMON): Move README here ...
(DOCS): ... from here, as it talks about the public-domain status
of the files, and this should be in both tarballs.
* README: Add intro. Mention public-domain status of files.
Remove and reorganize some obsolete text, e.g., move 1989 release
info from here to NEWS's tail.
* NEWS: Document the above.
Reported by Elliott Hughes in
<http://mm.icann.org/pipermail/tz/2013-September/020376.html>.
* localtime.c (timezone) [USG_COMPAT]:
(altzone) [ALTZONE]: Now long, not time_t.
* strftime.c (_fmt): Use long, not int, to store timezone.
* NEWS: Document this.
* Makefile (set-timestamps): Use git's tformat rather than format,
to port to strict POSIX hosts where `` output in shell scripts
cannot end in a non-newline. Use git diff --quiet rather than git
diff --name-only, as it's simpler. Use touch -c for safety, and
-m to avoid setting last-access time, which we don't care about.
Diagnose files that don't match repository.
* NEWS: Document this.
We don't know of any clients where this makes a difference, but it
is a more-conservative change, as in theory older clients could
reject version-3 format files merely because of the version number.
(ZIC_VERSION_PRE_2013): New macro.
(writezone): New arg 'version'. All callers changed.
(outzone): Output version-2 format files unless the capabilities
of version 3 are used.
Further testing found that it was incompatible with Ubuntu 12.04 glibc
so this feature requires redesign and more testing.
* Makefile (ZFLAGS): Remove comment about name and version info.
Make it an empty var instead.
* tzfile.5, tzfile.h: Remove description of meta-information.
* zic.8: Remove options -n and -o.
* zic.c: Don't include <stddef.h>.
(genoption, genoptions, genname, addgenoption, writevalue): Remove.
(usage, main, writezone): Remove support for -n and -o.
This was experimental, and it appears that the tzwinnow
approach will be better. We need to cut a new stable
release soon, and the -t option might make it harder to
integrate tzwinnow later, so let's omit -t for now.
* .gitignore: Remove time.tab.
* Makefile (ZONETABTYPE): Remove. All uses removed.
(time.tab): Remove. All uses removed.
* Theory: Omit discussion of time.tab.
* zone-time.awk: Remove.
* tzselect.8: Omit -t and time.tab.
* tzselect.ksh (ZONETABTYPE): Remove. All uses removed.
Remove -t ZONETABTYPE option.
* zone.tab: Restore first comment line, since there's no longer
a need to distinguish this file from time.tab.
* tzfile.5: Be a bit more careful about wording for integers.
Use binary terminators for the byte strings, not newlines.
Add a size field. Terminate by another NUL. Mention where
future extensions are expected to go.
* zic.c (writezone): Implement this.
(addgenoption): Omit namelen check; no longer needed.
(writevalue): Remove.
* Makefile (ZFLAGS): Add a comment about how to enable meta-info.
* tzfile.5: Describe meta-information.
* zic.8: Document new options -n and -o, which cause zic to
generate meta-info.
* zic.c: Include <stddef.h>, for ptrdiff_t.
(genoption, genoptions, genname): New static vars.
(usage): Summarize new options.
(addgenoption, writevalue): New function.
(main, writezone): Add support for new options.
Reported by David Wheeler in
<http://mm.icann.org/pipermail/tz/2013-September/020083.html>.
* australasia (Fiji): Tweak spring-forward transitions to match
timeanddate.com's predictions.
* newtzset.3: Adjust Fiji example to match updated predictions.
Reword examples so that the English descriptions are more
consistent and are roughly in the same order as the TZ string
contents.
* northamerica (America/Cayman, America/Jamaica, America/Grand_Turk):
Change KMT from -5:07:12 to -5:07:11 (should be -5:07:10.41).
* zone.tab: Fine-tune geographical coordinates to match -5:07:10.41.
I chose the latitude to match the General Post Office, Kingston,
in the city center according to Google Maps.