1
0
mirror of https://frontier.innolan.net/rainlance/amiga-tz.git synced 2025-11-21 14:30:55 +00:00
Commit Graph

332 Commits

Author SHA1 Message Date
da184ab535 mktime: guess better near transitions where tm_isdst does not change
* localtime.c (SMALLEST): New macro.
(time2sub) [TM_GMTOFF && !UNINIT_TRAP]:
If the UTC offset doesn't match the request, try the requested offset.
This catches a problem caught by -DTYPECHECK with a time stamp
near a transition from LMT to standard time, where both sides of
the transition have tm_isdst == 0.  If !defined TM_GMTOFF ||
UNINIT_TRAP you're out of luck: mktime will still conform
to its spec but it'll be more likely to guess wrong on these
ambiguous inputs.
* private.h (UNINIT_TRAP): New macro that defaults to 0.
* Makefile, NEWS: Document this.
2014-08-25 08:20:53 -07:00
7c681a8148 zdump: use localtime_r if available
This is a bit cleaner and faster.
* zdump.c (HAVE_LOCALTIME_R, HAVE_TZSET): Default to 1.
(tzset) [!HAVE_TZSET]:
(localtime_r) [!HAVE_LOCALTIME_R]: Provide a replacement.
(settimezone): Call tzset after changing environ.
(my_localtime_r): Rename from my_localtime, and change API to
be compatible with localtime_r, not localtime.  All uses changed.
* Makefile, NEWS: Document this.
2014-08-25 08:20:52 -07:00
f50d254594 * Makefile (TZDOBJS): Remove ialloc.o.
* NEWS: Document this.
2014-08-25 08:20:52 -07:00
f4948756b5 Remove CMUCS's gtime function.
The Mach project has been inactive for decades,
and mktime has evidently replaced gtime.
* Makefile: Remove comment about CMUCS.
* localtime.c (gtime) [CMUCS]: Remove.
* NEWS: Document the above.
2014-08-25 08:20:52 -07:00
96eff14f85 Simplify configuration of TM_GMTOFF and TM_ZONE.
* private.h, zdump.c (_GNU_SOURCE): New macro.
(TM_GMTOFF) [!NO_TM_GMTOFF]:
(TM_ZONE) [!NO_TM_ZONE]: Guess definition if not already defined.
* Makefile, NEWS: Document the above.
2014-08-25 08:19:48 -07:00
10ac30643e * Makefile (check_time_t_alternatives): Pass REDO to submake. 2014-08-25 08:19:48 -07:00
11f5ff1129 * Makefile (strftime.o): Depend on private.h. 2014-08-25 08:19:47 -07:00
64399fc596 Make the library thread-safe if THREAD_SAFE is defined.
* localtime.c [THREAD_SAFE]: Include pthread.h.
(VOLATILE): New macro.
(locallock) [THREAD_SAFE]: New static var.
(lock, unlock): New functions.
(lcl_is_set, gmt_is_set): Now VOLATILE.
(tzsetwall): Move cleaned-up guts to new function tzsetwall_unlocked,
for which this is now merely a locking wrapper.
(tzset): Similarly, for new function tzset_unlocked.
(localsub): Don't set tzname here; that's not thread-safe.
This change can lose information on hosts without TM_ZONE,
but there is no reliable way to fix that in a thread-safe way.
(localtime_tzset): New function, which does proper locking.
(localtime, localtime_r): Use it.
(gmtsub): Do not worry about initializing gmtptr, as that's now
the caller's responsibility.
(gmtime): Reimplement in terms of gmtime_r.
(timegm): Reimplement in terms of timeoff.
(gmtime_r, offtime, mktime, timeoff, time2posix, posix2time):
Lock at start and unlock at end.
* Makefile, NEWS: Document this.
2014-08-25 08:19:47 -07:00
ac5bf48519 New data file 'backzone' for out-of-scope and/or poorly-sourced data.
* backzone: New file.
* Makefile (DATA): Add backzone.
(check_character_set): Check it.
(posix_packrat): New rule.
(.PHONY): Add it.
* NEWS: Document the above.
2014-08-12 17:38:35 -07:00
e107ce8107 * Makefile (.PHONY): Add check_white_space. 2014-08-12 11:30:30 -07:00
3b4c54b5b7 * Makefile (check_character_set): Check CONTRIBUTING like README. 2014-08-12 01:12:34 -07:00
bc9b5b8914 Distribute Theory as part of the tzdata tarball too.
(Suggested by Alan Barrett.)
* Makefile (COMMON): Move Theory here ...
(DOCS): From here.
* NEWS: Document this.
2014-08-12 01:10:09 -07:00
ac652d59bb * CONTRIBUTING: New file.
* Makefile (COMMON): Add it.
* README, NEWS, Theory, africa, asia, australasia, europe:
* northamerica, southamerica: Mention it.
2014-08-11 16:03:52 -07:00
f02ca7c6ef Shift the load a little between the two tarballs.
(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.
2014-08-11 12:32:48 -07:00
0512625db7 Improve checks for white space.
* Makefile (check_white_space): Rename from check_tabs; all uses
changed.  Also check for trailing white space and for oddball
ASCII white space characters.
2014-08-11 11:53:14 -07:00
f2fd32be74 Don't put spaces before tabs.
* Makefile (check_tabs): New rule.
(check): Use it.
Also, fix all other files to not have spaces before tabs.
2014-08-09 17:52:45 -07:00
b7a38560a5 Don't put leapseconds.awk in tzdata tarball.
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).
2014-08-09 12:46:44 -07:00
17be956450 Release tzcode2014f and tzdata2014f.
* NEWS, Makefile (VERSION): Increase to 2014f.
2014-08-05 17:46:53 -07:00
4c73ed617f Rename time.tab to zone1970.tab.
* Makefile (ZONETABLES): Rename from TIMETABLES.  All uses changed.
* zone1970.tab: Rename from time.tab.  All uses changed.
2014-07-31 15:20:45 -07:00
13454dc50c * Makefile (TZCOBJS), NEWS: Remove localtime.o, asctime.o.
(Thanks to John Cochran.)
2014-07-19 19:19:48 -07:00
5ddc47fe41 New file time.tab, superseding zone.tab
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.
2014-07-18 13:31:54 -07:00
c25e1180cf More spelling and accent fixes.
Plus, update a now-obsolete source for Samoa's late-2011 change to the
International Date Line.
2014-06-27 16:06:47 -07:00
5b9d37cbea Go back to ASCII in *.txt files, too.
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.
2014-06-25 23:29:43 -07:00
437a132016 Remove usno* files.
(Thanks to Tim Parenti for the suggestion.)
* Makefile (MISC), NEWS: Remove usno* files.
* usno1988, usno1989, usno1989a, usno1995, usno1997, usno1998: Remove.
* africa, asia, australasia, tz-link.htm: Remove commentary about
these files.
2014-06-25 13:53:15 -07:00
4127a54685 Improve checking for non-ASCII characters.
* 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.
2014-06-25 12:17:43 -07:00
99544d30aa Update to pacify recent GCC's static checking.
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.
2014-06-18 23:35:58 -07:00
09d35582da Simplify use of URLs in text files.
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.)
2014-06-15 17:38:04 -07:00
9a8aa790bc Don't abuse "`" to mean open quote.
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.
2014-06-15 13:27:37 -07:00
7587516fbb Change web page encoding from US-ASCII to UTF-8.
* 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 '&ndash;'.
2014-06-14 17:19:27 -07:00
1f8eea5374 Allow non-ASCII characters in the commentary.
* 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.
2014-06-14 16:36:18 -07:00
2d889e995b Improve performance a bit with GNU Make.
* Makefile (.PHONY): New rule, listing non-file targets.
2014-06-14 15:25:13 -07:00
aac77e9d1d Release tzcode2014e and tzdata2014e.
* NEWS, Makefile (VERSION): Increase to 2014e.
2014-06-12 21:55:29 -07:00
a91cc14d7f Release tzcode2014d and tzdata2014d.
* NEWS, Makefile (VERSION): Increase to 2014d.
2014-05-27 21:35:46 -07:00
b22d459a36 zic: work around GNOME bug by refusing to go back before the Big Bang
This works around Gnome bug 730332
<https://bugzilla.gnome.org/show_bug.cgi?id=730332>.
zic 2014c introduced the idea of generating a transition at the
minimum time value -2**63, to avoid ambiguities about what to do
before the first real transition.  Through Glib release 2.40, the
interval_end function of Glib's gtimezone.c subtracts one from
this, to find the end time of the zeroth interval (i.e., the
interval containing all the "early" time stamps); this subtraction
typically overflows and wraps around to 2**63 - 1, which causes
Glib to go off the rails and assume that all time stamps are
"early".  For example, Glib computes Sao Paulo time stamps as if
Brazil's circa-1913 rules were still in effect.
(Thanks to Leonardo Chiquitto for reporting the bug.)
Work around the bug by not generating time stamps equal to -2**63.
Come to think of it, time stamps before the Big Bang are physically
suspect anyway, so don't generate time stamps before the Big Bang.
* Makefile (GCC_DEBUG_FLAGS): Add comment re BIG_BANG.
* NEWS, zic.8 (NOTES): Document this.
* zic.c (BIG_BANG): New macro.
(big_bang_time): New constant.
(writezone, outzone, addtt): Compare to big_bang_time, not to
min_time, when deciding whether to output a time stamp.
2014-05-23 23:02:47 -03:00
afa8e7a12b Release tzcode2014c and tzdata2014c.
* NEWS, Makefile (VERSION): Increase to 2014c.
2014-05-13 07:45:53 -07:00
cbea42a159 * Makefile (clean_misc): Remove libtz.a. 2014-03-26 18:20:38 -07:00
ea08a2f6ef Release tzcode2014b and tzdata2014b.
* NEWS, Makefile (VERSION): Increase to 2014b.
2014-03-24 21:30:17 -07:00
ff4e892f5d Release tzcode2014a and tzdata2014a.
* NEWS, Makefile (VERSION): Increase to 2014a.
2014-03-07 23:32:02 -08:00
8dbbeb507e Simplify some ALL_STATE and PCTS ifdefs.
* 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.
2014-01-17 22:42:22 -08:00
add863bcde Make 'make check_web' work with Ubuntu 13.10 by default.
* Makefile (SGML_CATALOG_FILES): HTML4.cat moved in Ubuntu.
* NEWS: Document this.
2014-01-02 13:20:49 -08:00
1f4030f845 Release tzcode2013i and tzdata2013i.
* NEWS, Makefile (VERSION): Increase to 2013i.
2013-12-17 07:26:04 -08:00
1b2656774f build: remove NOSOLAR option
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.
2013-11-13 00:49:41 -08:00
a9ac0f6938 maint: remove solar-time experiment
It occasionally causes confusion, e.g.,
<http://mm.icann.org/pipermail/tz/2013-November/020486.html>.
* Makefile (SDATA): Remove.  All uses removed.
* newctime.3 (NOTES): Remove reference to solar time.
* solar87, solar88, solar89: Remove.
* NEWS: Document this.
2013-11-13 00:49:41 -08:00
52d3619cc1 Release tzcode2013h and tzdata2013h.
* NEWS, Makefile (VERSION): Increase to 2013h.
2013-10-25 15:34:35 -07:00
be06aa48db tzselect: port to /bin/sh
Problem reported by Patrick 'P. J.' McDermott in
<http://mm.icann.org/pipermail/tz/2013-October/020441.html>.
This code is quite a bit different from what he proposed.
* tzselect.ksh: Rewrite so that it should work with /bin/sh on
common platforms.  For portability to Solaris 9 /bin/sh, use
`...`, not $(...), and avoid $((...)).
(doselect): New function.  Use this instead of plain 'select'.
Callers no longer need to worry whether it sets the var to empty.
* Makefile, NEWS: Document this.
2013-10-06 02:11:51 -07:00
1d67c5bfca build: Makefile fixes; let user give AR and RANLIB; local libtz.a
* Makefile: Let the user override AR, and build libtz.a before
installing it, as suggested by Michael Forney in
<https://github.com/eggert/tz/pull/3>.  Also, let the user
override RANLIB.  Modernize a bit by assuming POSIX.2-1992 or
later; this is safe nowadays and simplifies the libtz.a business.
And treat 'leapseconds' more like we used to, since it's
machine-independent a 'make clean' doesn't need to remove it.
(TZLIB): Remove.
(AR, RANLIB): New macros.
(TABDATA): Add leapseconds, so that 'make' builds it by default.
(DATA): Remove leapseconds, since $(TABDATA) now has it.
(all): Depend on libtz.a, not $(LIBOBJS).
(install): Install libtz.a using 'cp', like other files.
Also invoke $(RANLIB) on it, after installing.
Do not assume that TZDIR is not overridden.
(install, INSTALL, check_time_t_alternatives): Use 'mkdir -p', as
it's safe to assume nowadays (standardized in POSIX.2-1992).
(install, INSTALL): Prefer 'cp -f' to 'rm' followed by 'cp', as
it's safe to assume 'cp -f' nowadays (also standardized in POSIX.2-1992).
(libtz.a): Rename from $(DESTDIR)$(TZLIB), since we now build it here.
Use $(AR) rather than ar.
Use $(RANLIB) rather than trying to guess it.
(clean_misc): Do not remove 'leapseconds', as it's machine-independent.
(maintainer-clean): Remove 'leapseconds' here instead.
(clean, check_public): Standardize on 'rm -fr' rather than 'rm -f -r';
formerly the makefile was inconsistent.
(set-timestamps.out): Don't ignore failurs of the actual touch command.
2013-10-02 10:48:46 -07:00
1479cad711 * Makefile (TZCSRCS, TZDSRCS, DATESRCS): Remove; unused.
* NEWS: Document recent Makefile fixes.
2013-10-01 21:54:42 -07:00
132e8351b6 * Makefile (TZDSRCS, TZDOBJS): Interchange asctime.c and asctime.o.
(Thanks to Andrew Paprocki.)
2013-10-01 21:45:25 -07:00
320239cf81 Release tzcode2013g and tzdata2013g.
* NEWS, Makefile (VERSION): Increase to 2013g.
2013-09-30 21:10:49 -07:00
4b556f8dc8 * Makefile (check_public): When rebuilding, make $(ENCHILADA)
as well as 'all', so that the *.txt files are built.
2013-09-29 23:45:06 -07:00