This lets zic handle the time rules of Troll station,
Antarctica. Adapted from a fix by Zefram in:
http://mm.icann.org/pipermail/tz/2014-March/020759.html
* zic.c (timecnt_alloc): New static var.
(attypes): Now a pointer to an array, not a fixed size array.
(writezone, addtt): Don't assume the number of times is less than
TZ_MAX_TIMES.
* NEWS: Document this.
Also, allocate memory faster by growing buffers by a factor of 1.5
each time, rather than simply adding 1 to the size.
* private.h (SIZE_MAX): New macro, for older systems lacking it.
* zic.c (nrules_alloc, nzones_alloc, nlinks_alloc): New static vars.
(memory_exhausted, size_product, growalloc): New functions.
(memcheck, inrule, inzsub, inlink, getfields): Use them.
* europe (Europe/Simferopol), NEWS:
Crimea switches to MSK on 2014-03-30 at 02:00 local time.
(Thanks to Alexander Krivenyshev.)
* zone.tab: Move its zone.tab entry from UA to RU.
* tz-link.htm, NEWS: Fix misstatement about which part of the
Microsoft Windows software universe supports tz database names.
(Thanks to Donald MacQueen.)
* tz-link.htm, NEWS: Add Time.is (thanks to Even Scharning), WX-now
(thanks to David Braverman), TZ4Net (thanks to Matt Johnson).
Remove Simple Timer + Clocks.
(Thanks to Vladimir in Moscow via Alois Treindl.)
* europe (Europe/Kiev): Omit 1990-01-01 transition.
1990-07-01 transition was to EEST, not EET. EEST ended
1991-09-29 03:00.
* tz-link.htm: Mention zeitverschiebung.net (thanks to Martin
Jaeger) and the timezone-olson Haskell package. Remove moribund
link to daylight-savings-time.info.
* NEWS: Document this.
* tz-link.htm: Mention xCal and jCal.
Mention Microsoft Windows 8.1 support for tz names.
CLDR data is available in both XML and JSON form.
Update two links (thanks to Oscar van Vlijmen).
Fix some formatting glitches, e.g., remove random newlines from
abbr elements' title attributes.
* NEWS: Document this.
* Makefile (GCC_DEBUG_FLAGS): Add -Wno-address and -Wno-cast-qual.
Otherwise, GCC 4.8.1 complains about some of the following changes.
* localtime.c (wildabbr): Now const. This is a tiny bit more
efficient, POSIX allows it, and the ALL_STATE simplifications
below make use of it. All uses changed to cast if needed.
(settzname, tzload, localsub, gmtsub, timesub, time2sub, time1):
Protect less code with ALL_STATE; this is simpler and doesn't
change behavior (or, these days, efficiency).
(time1): Simplify the PCTS ifdef, and explain what PCTS is.
* localtime.c (tzload) [ALL_STATE]: Initialize sp->goback
and sp->goahead even if memory allocation fails.
(tzload, tzsetwall, tzset, gmtsub) [ALL_STATE]:
Use malloc, not calloc, since the !ALL_STATE code has to
work with reused storage anyway.
* NEWS: Document Logan Chien's fix.
* asia (Jordan, Asia/Amman): Jordan switches back to standard time
on 2013-12-20. (Thanks to Steffen Thorsen.) Assume this is at
00:00s, and that the previous schedule resumes next year.
* NEWS: Document this.
The current tzdata now goes to 17, which is uncomfortably close to
the NOSOLAR limit of 20.
* Makefile (CFLAGS): Remove NOSOLAR comment.
* tzfile.h (TZ_MAX_TYPES): Ignore NOSOLAR; always default to 256.
* NEWS: Document this.
(Thanks to Even Scharning for the heads-up.)
* africa (Libya): DST rules are for 2013 only.
(Africa/Tripoli): Switch to EET without DST as of 02:00 today.
* NEWS: Document this.
This fixes a longstanding test-case failure with
'make check_time_t_alternatives'.
* localtime.c (detzcode64): Return int_fast64_t, not time_t,
for the benefit of platforms where time_t is narrower than 64 bits.
The distinction matters if time_t is 32-bit unsigned.
Simplify the shifts and masks.
(tzload): Fix the check for overflow when storing the loaded time
value into a time_t object. The old code didn't work when
time_t was an unsigned 32-bit quantity.
(transtime): Return the offset from the start of the year,
not the offset since the Epoch, since the former cannot overflow
but the latter can. Caller changed.
(tzparse): Check for overflow more carefully when computing
time stamps. The old code didn't work for 32-bit unsigned values,
in unusual situations such as Pacific/Fiji and Pacific/Auckland
for times past 2038.
(increment_overflow_time): New function.
* zdump.c (strtoimax) [!INTMAX_MAX]: Define like private.h does.
(SCNdMAX): Remove; no longer used.
(main): Use strtoimax, not sscanf with SCNdMAX, as strtoimax has
well-defined behavior when the input number is out of numeric range.