diff options
author | Stefan Farfeleder <stefanf@FreeBSD.org> | 2004-06-20 11:52:51 +0000 |
---|---|---|
committer | Stefan Farfeleder <stefanf@FreeBSD.org> | 2004-06-20 11:52:51 +0000 |
commit | 08ebef69b63e1da06f8b60749d25383ba5d28d2f (patch) | |
tree | d54a7de1ca524a0bff795aa90f46b0dddd294481 /usr.sbin | |
parent | dcd1bc204fd36ed3fc26c4077f8d4d4e97020da0 (diff) | |
download | src-test2-08ebef69b63e1da06f8b60749d25383ba5d28d2f.tar.gz src-test2-08ebef69b63e1da06f8b60749d25383ba5d28d2f.zip |
Notes
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/zic/README | 20 | ||||
-rw-r--r-- | usr.sbin/zic/Theory | 313 | ||||
-rw-r--r-- | usr.sbin/zic/private.h | 51 | ||||
-rw-r--r-- | usr.sbin/zic/tz-art.htm | 278 | ||||
-rw-r--r-- | usr.sbin/zic/tz-link.htm | 443 | ||||
-rw-r--r-- | usr.sbin/zic/zdump.8 | 8 | ||||
-rw-r--r-- | usr.sbin/zic/zdump.c | 18 | ||||
-rw-r--r-- | usr.sbin/zic/zic.8 | 13 | ||||
-rw-r--r-- | usr.sbin/zic/zic.c | 110 |
9 files changed, 1162 insertions, 92 deletions
diff --git a/usr.sbin/zic/README b/usr.sbin/zic/README index 5de3d74136e9..985a5118468f 100644 --- a/usr.sbin/zic/README +++ b/usr.sbin/zic/README @@ -1,4 +1,4 @@ -@(#)README 7.10 +@(#)README 7.11 "What time is it?" -- Richard Deacon as The King "Any time you want it to be." -- Frank Baxter as The Scientist @@ -33,8 +33,22 @@ Since POSIX frowns on correct leap second handling, the default behavior of the "zic" command (in the absence of a "-L" option) has been changed to omit leap second information from its output files. -Be sure to read the comments in "Makefile" and make any changes -needed to make things right for your system. +Here is a recipe for acquiring, building, installing, and testing the +tz distribution on a GNU/Linux or similar host. + + mkdir tz + cd tz + wget 'ftp://elsie.nci.nih.gov/pub/tz*.tar.gz' + gzip -dc tzcode*.tar.gz | tar -xf - + gzip -dc tzdata*.tar.gz | tar -xf - + +Be sure to read the comments in "Makefile" and make any changes needed +to make things right for your system, especially if you are using some +platform other than GNU/Linux. Then run the following commands, +substituting your desired installation directory for "$HOME/tzdir": + + make TOPDIR=$HOME/tzdir install + $HOME/tzdir/etc/zdump -v America/Los_Angeles To use the new functions, use a "-ltz" option when compiling or linking. diff --git a/usr.sbin/zic/Theory b/usr.sbin/zic/Theory index 1c431335bfc4..cbf53b9e7d73 100644 --- a/usr.sbin/zic/Theory +++ b/usr.sbin/zic/Theory @@ -1,4 +1,4 @@ -@(#)Theory 7.6 +@(#)Theory 7.15 ----- Outline ----- @@ -6,12 +6,14 @@ Time and date functions Names of time zone regions Time zone abbreviations + Calendrical issues + Time and time zones on Mars ----- Time and date functions ----- These time and date functions are upwards compatible with POSIX.1, -an international standard for Unix-like systems. +an international standard for UNIX-like systems. As of this writing, the current edition of POSIX.1 is: Information technology --Portable Operating System Interface (POSIX (R)) @@ -34,7 +36,7 @@ POSIX.1 has the following properties and limitations. stdoffset[dst[offset],date[/time],date[/time]] where: - + std and dst are 3 or more characters specifying the standard and daylight saving time (DST) zone names. @@ -143,7 +145,7 @@ Points of interest to folks with other systems: since the format of zic's input changed slightly in late 1994, and many vendors still do not support the new input format. -* The Unix Version 7 "timezone" function is not present in this package; +* The UNIX Version 7 "timezone" function is not present in this package; it's impossible to reliably map timezone's arguments (a "minutes west of GMT" value and a "daylight saving time in effect" flag) to a time zone abbreviation, and we refuse to guess. @@ -178,11 +180,34 @@ so much the better. ----- Names of time zone rule files ----- -The names of this package's installed time zone rule files are chosen to -help minimize possible future incompatibilities due to political events. -Ordinarily, names of countries are not used, to avoid incompatibilities -when countries change their name (e.g. Zaire->Congo) or -when locations change countries (e.g. Hong Kong from UK colony to China). +The time zone rule file naming conventions attempt to strike a balance +among the following goals: + + * Uniquely identify every national region where clocks have all + agreed since 1970. This is essential for the intended use: static + clocks keeping local civil time. + + * Indicate to humans as to where that region is. This simplifes use. + + * Be robust in the presence of political changes. This reduces the + number of updates and backward-compatibility hacks. For example, + names of countries are ordinarily not used, to avoid + incompatibilities when countries change their name + (e.g. Zaire->Congo) or when locations change countries + (e.g. Hong Kong from UK colony to China). + + * Be portable to a wide variety of implementations. + This promotes use of the technology. + + * Use a consistent naming convention over the entire world. + This simplifies both use and maintenance. + +This naming convention is not intended for use by inexperienced users +to select TZ values by themselves (though they can of course examine +and reuse existing settings). Distributors should provide +documentation and/or a simple selection interface that explains the +names; see the 'tzselect' program supplied with this distribution for +one example. Names normally have the form AREA/LOCATION, where AREA is the name of a continent or ocean, and LOCATION is the name of a specific @@ -193,11 +218,16 @@ and `Pacific/Honolulu'. Here are the general rules used for choosing location names, in decreasing order of importance: - Use only valid Posix file names. Use only Ascii letters, digits, `.', - `-' and `_'. Do not exceed 14 characters or start with `-'. - E.g. prefer `Brunei' to `Bandar_Seri_Begawan'. + Use only valid POSIX file name components (i.e., the parts of + names other than `/'). Within a file name component, + use only ASCII letters, `.', `-' and `_'. Do not use + digits, as that might create an ambiguity with POSIX + TZ strings. A file name component must not exceed 14 + characters or start with `-'. E.g., prefer `Brunei' + to `Bandar_Seri_Begawan'. Include at least one location per time zone rule set per country. - One such location is enough. + One such location is enough. Use ISO 3166 (see the file + iso3166.tab) to help decide whether something is a country. If all the clocks in a country's region have agreed since 1970, don't bother to include more than one location even if subregions' clocks disagreed before 1970. @@ -209,9 +239,9 @@ in decreasing order of importance: or regions, so that any future time zone changes do not split locations into different time zones. E.g. prefer `Paris' to `France', since France has had multiple time zones. - Use traditional English spelling, e.g. prefer `Rome' to `Roma', and + Use mainstream English spelling, e.g. prefer `Rome' to `Roma', and prefer `Athens' to the true name (which uses Greek letters). - The Posix file name restrictions encourage this rule. + The POSIX file name restrictions encourage this rule. Use the most populous among locations in a country's time zone, e.g. prefer `Shanghai' to `Beijing'. Among locations with similar populations, pick the best-known location, @@ -225,13 +255,19 @@ in decreasing order of importance: Use `_' to represent a space. Omit `.' from abbreviations in names, e.g. prefer `St_Helena' to `St._Helena'. + Do not change established names if they only marginally + violate the above rules. For example, don't change + the existing name `Rome' to `Milan' merely because + Milan's population has grown to be somewhat greater + than Rome's. + If a name is changed, put its old spelling in the `backward' file. The file `zone.tab' lists the geographical locations used to name time zone rule files. Older versions of this package used a different naming scheme, and these older names are still supported. -See the file `backwards' for most of these older names +See the file `backward' for most of these older names (e.g. `US/Eastern' instead of `America/New_York'). The other old-fashioned names still supported are `WET', `CET', `MET', `EET' (see the file `europe'), @@ -245,25 +281,39 @@ like `EST' to be compatible with human tradition and POSIX.1. Here are the general rules used for choosing time zone abbreviations, in decreasing order of importance: - Use abbreviations that consist of 3 or more upper-case Ascii letters, - except use "___" for locations while uninhabited. - Posix.1 requires at least 3 characters, and the restriction to - upper-case Ascii letters follows most traditions. + Use abbreviations that consist of three or more ASCII letters. Previous editions of this database also used characters like ' ' and '?', but these characters have a special meaning to the shell and cause commands like set `date` - to have unexpected effects. In theory, the character set could - be !%./@A-Z^_a-z{}, but these tables use only upper-case - Ascii letters (and "___"). + to have unexpected effects. + Previous editions of this rule required upper-case letters, + but the Congressman who introduced Chamorro Standard Time + preferred "ChST", so the rule has been relaxed. + + This rule guarantees that all abbreviations could have + been specified by a POSIX.1 TZ string. POSIX.1 + requires at least three characters for an + abbreviation. POSIX.1-1996 says that an abbreviation + cannot start with ':', and cannot contain ',', '-', + '+', NUL, or a digit. Draft 7 of POSIX 1003.1-200x + changes this rule to say that an abbreviation can + contain only '-', '+', and alphanumeric characters in + the current locale. To be portable to both sets of + rules, an abbreviation must therefore use only ASCII + letters, as these are the only letters that are + alphabetic in all locales. + Use abbreviations that are in common use among English-speakers, e.g. `EST' for Eastern Standard Time in North America. We assume that applications translate them to other languages as part of the normal localization process; for example, a French application might translate `EST' to `HNE'. + For zones whose times are taken from a city's longitude, use the traditional xMT notation, e.g. `PMT' for Paris Mean Time. The only name like this in current use is `GMT'. + If there is no common English abbreviation, abbreviate the English translation of the usual phrase used by native speakers. If this is not available or is a phrase mentioning the country @@ -278,8 +328,225 @@ in decreasing order of importance: and then append `T', `ST', etc. as before; e.g. `VLAST' for VLAdivostok Summer Time. + Use "zzz" for locations while uninhabited. The mnemonic is that + these locations are, in some sense, asleep. + Application writers should note that these abbreviations are ambiguous in practice: e.g. `EST' has a different meaning in Australia than it does in the United States. In new applications, it's often better to use numeric UTC offsets like `-0500' instead of time zone abbreviations like `EST'; this avoids the ambiguity. + + +----- Calendrical issues ----- + +Calendrical issues are a bit out of scope for a time zone database, +but they indicate the sort of problems that we would run into if we +extended the time zone database further into the past. An excellent +resource in this area is Nachum Dershowitz and Edward M. Reingold, +<a href="http://emr.cs.uiuc.edu/home/reingold/calendar-book/index.shtml"> +Calendrical Calculations +</a>, Cambridge University Press (1997). Other information and +sources are given below. They sometimes disagree. + + +France + +Gregorian calendar adopted 1582-12-20. +French Revolutionary calendar used 1793-11-24 through 1805-12-31, +and (in Paris only) 1871-05-06 through 1871-05-23. + + +Russia + +From Chris Carrier <72157.3334@CompuServe.COM> (1996-12-02): +On 1929-10-01 the Soviet Union instituted an ``Eternal Calendar'' +with 30-day months plus 5 holidays, with a 5-day week. +On 1931-12-01 it changed to a 6-day week; in 1934 it reverted to the +Gregorian calendar while retaining the 6-day week; on 1940-06-27 it +reverted to the 7-day week. With the 6-day week the usual days +off were the 6th, 12th, 18th, 24th and 30th of the month. +(Source: Evitiar Zerubavel, _The Seven Day Circle_) + + +Mark Brader reported a similar story in "The Book of Calendars", edited +by Frank Parise (1982, Facts on File, ISBN 0-8719-6467-8), page 377. But: + +From: Petteri Sulonen (via Usenet) +Date: 14 Jan 1999 00:00:00 GMT +Message-ID: <Petteri.Sulonen-1401991626030001@lapin-kulta.in.helsinki.fi> + +If your source is correct, how come documents between 1929 -- 1940 were +still dated using the conventional, Gregorian calendar? + +I can post a scan of a document dated December 1, 1934, signed by +Yenukidze, the secretary, on behalf of Kalinin, the President of the +Executive Committee of the Supreme Soviet, if you like. + + + +Sweden (and Finland) + +From: msb@sq.com (Mark Brader) +<a href="news:1996Jul6.012937.29190@sq.com"> +Subject: Re: Gregorian reform -- a part of locale? +</a> +Date: 1996-07-06 + +In 1700, Denmark made the transition from Julian to Gregorian. Sweden +decided to *start* a transition in 1700 as well, but rather than have one of +those unsightly calendar gaps :-), they simply decreed that the next leap +year after 1696 would be in 1744 -- putting the whole country on a calendar +different from both Julian and Gregorian for a period of 40 years. + +However, in 1704 something went wrong and the plan was not carried through; +they did, after all, have a leap year that year. And one in 1708. In 1712 +they gave it up and went back to Julian, putting 30 days in February that +year!... + +Then in 1753, Sweden made the transition to Gregorian in the usual manner, +getting there only 13 years behind the original schedule. + +(A previous posting of this story was challenged, and Swedish readers +produced the following references to support it: "Tiderakning och historia" +by Natanael Beckman (1924) and "Tid, en bok om tiderakning och +kalendervasen" by Lars-Olof Lode'n (no date was given).) + + +Grotefend's data + +From: "Michael Palmer" <mpalmer@netcom.com> [with one obvious typo fixed] +Subject: Re: Gregorian Calendar (was Re: Another FHC related question +Newsgroups: soc.genealogy.german +Date: Tue, 9 Feb 1999 02:32:48 -800 +Message-ID: <199902091032.CAA09644@netcom10.netcom.com> + +The following is a(n incomplete) listing, arranged chronologically, of +European states, with the date they converted from the Julian to the +Gregorian calendar: + +04/15 Oct 1582 - Italy (with exceptions), Spain, Portugal, Poland (Roman + Catholics and Danzig only) +09/20 Dec 1582 - France, Lorraine + +21 Dec 1582/ + 01 Jan 1583 - Holland, Brabant, Flanders, Hennegau +10/21 Feb 1583 - bishopric of Liege (L"uttich) +13/24 Feb 1583 - bishopric of Augsburg +04/15 Oct 1583 - electorate of Trier +05/16 Oct 1583 - Bavaria, bishoprics of Freising, Eichstedt, Regensburg, + Salzburg, Brixen +13/24 Oct 1583 - Austrian Oberelsass and Breisgau +20/31 Oct 1583 - bishopric of Basel +02/13 Nov 1583 - duchy of J"ulich-Berg +02/13 Nov 1583 - electorate and city of K"oln +04/15 Nov 1583 - bishopric of W"urzburg +11/22 Nov 1583 - electorate of Mainz +16/27 Nov 1583 - bishopric of Strassburg and the margraviate of Baden +17/28 Nov 1583 - bishopric of M"unster and duchy of Cleve +14/25 Dec 1583 - Steiermark + +06/17 Jan 1584 - Austria and Bohemia +11/22 Jan 1584 - Luzern, Uri, Schwyz, Zug, Freiburg, Solothurn +12/23 Jan 1584 - Silesia and the Lausitz +22 Jan/ + 02 Feb 1584 - Hungary (legally on 21 Oct 1587) + Jun 1584 - Unterwalden +01/12 Jul 1584 - duchy of Westfalen + +16/27 Jun 1585 - bishopric of Paderborn + +14/25 Dec 1590 - Transylvania + +22 Aug/ + 02 Sep 1612 - duchy of Prussia + +13/24 Dec 1614 - Pfalz-Neuburg + + 1617 - duchy of Kurland (reverted to the Julian calendar in + 1796) + + 1624 - bishopric of Osnabr"uck + + 1630 - bishopric of Minden + +15/26 Mar 1631 - bishopric of Hildesheim + + 1655 - Kanton Wallis + +05/16 Feb 1682 - city of Strassburg + +18 Feb/ + 01 Mar 1700 - Protestant Germany (including Swedish possessions in + Germany), Denmark, Norway +30 Jun/ + 12 Jul 1700 - Gelderland, Zutphen +10 Nov/ + 12 Dec 1700 - Utrecht, Overijssel + +31 Dec 1700/ + 12 Jan 1701 - Friesland, Groningen, Z"urich, Bern, Basel, Geneva, + Turgau, and Schaffhausen + + 1724 - Glarus, Appenzell, and the city of St. Gallen + +01 Jan 1750 - Pisa and Florence + +02/14 Sep 1752 - Great Britain + +17 Feb/ + 01 Mar 1753 - Sweden + +1760-1812 - Graub"unden + +The Russian empire (including Finland and the Baltic states) did not +convert to the Gregorian calendar until the Soviet revolution of 1917. + +Source: H. Grotefend, _Taschenbuch der Zeitrechnung des deutschen +Mittelalters und der Neuzeit_, herausgegeben von Dr. O. Grotefend +(Hannover: Hahnsche Buchhandlung, 1941), pp. 26-28. + + +----- Time and time zones on Mars ----- + +Some people have adjusted their work schedules to fit Mars time. +Dozens of special Mars watches were built for Jet Propulsion +Laboratory workers who kept Mars time during the Mars Exploration +Rovers mission (2004). These timepieces look like normal Seikos and +Citizens but use Mars seconds rather than terrestrial seconds. + +A Mars solar day is called a "sol" and has a mean period equal to +about 24 hours 39 minutes 35.244 seconds in terrestrial time. It is +divided into a conventional 24-hour clock, so each Mars second equals +about 1.02749125 terrestrial seconds. + +The prime meridian of Mars goes through the center of the crater +Airy-0, named in honor of the British astronomer who built the +Greenwich telescope that defines Earth's prime meridian. Mean solar +time on the Mars prime meridian is called Mars Coordinated Time (MTC). + +Each landed mission on Mars has adopted a different reference for +solar time keeping, so there is no real standard for Mars time zones. +For example, the Mars Exploration Rover project (2004) defined two +time zones "Local Solar Time A" and "Local Solar Time B" for its two +missions, each zone designed so that its time equals local true solar +time at approximately the middle of the nominal mission. Such a "time +zone" is not particularly suited for any application other than the +mission itself. + +Many calendars have been proposed for Mars, but none have achieved +wide acceptance. Astronomers often use Mars Sol Date (MSD) which is a +sequential count of Mars solar days elapsed since about 1873-12-29 +12:00 GMT. + +The tz database does not currently support Mars time, but it is +documented here in the hopes that support will be added eventually. + +Sources: + +Michael Allison and Robert Schmunk, +"Technical Notes on Mars Solar Time as Adopted by the Mars24 Sunclock" +<http://www.giss.nasa.gov/tools/mars24/help/notes.html> (2004-03-15). + +Jia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times +(2004-01-14), pp A1, A20-A21. diff --git a/usr.sbin/zic/private.h b/usr.sbin/zic/private.h index f2c0558a1618..c8f45486837f 100644 --- a/usr.sbin/zic/private.h +++ b/usr.sbin/zic/private.h @@ -21,7 +21,7 @@ #ifndef lint #ifndef NOID -static char privatehid[] = "@(#)private.h 7.48"; +static char privatehid[] = "@(#)private.h 7.53"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -38,18 +38,30 @@ static char privatehid[] = "@(#)private.h 7.48"; #define HAVE_GETTEXT 0 #endif /* !defined HAVE_GETTEXT */ +#ifndef HAVE_INCOMPATIBLE_CTIME_R +#define HAVE_INCOMPATIBLE_CTIME_R 0 +#endif /* !defined INCOMPATIBLE_CTIME_R */ + #ifndef HAVE_SETTIMEOFDAY #define HAVE_SETTIMEOFDAY 3 #endif /* !defined HAVE_SETTIMEOFDAY */ #ifndef HAVE_STRERROR -#define HAVE_STRERROR 0 +#define HAVE_STRERROR 1 #endif /* !defined HAVE_STRERROR */ #ifndef HAVE_SYMLINK #define HAVE_SYMLINK 1 #endif /* !defined HAVE_SYMLINK */ +#ifndef HAVE_SYS_STAT_H +#define HAVE_SYS_STAT_H 1 +#endif /* !defined HAVE_SYS_STAT_H */ + +#ifndef HAVE_SYS_WAIT_H +#define HAVE_SYS_WAIT_H 1 +#endif /* !defined HAVE_SYS_WAIT_H */ + #ifndef HAVE_UNISTD_H #define HAVE_UNISTD_H 1 #endif /* !defined HAVE_UNISTD_H */ @@ -62,6 +74,11 @@ static char privatehid[] = "@(#)private.h 7.48"; #define LOCALE_HOME "/usr/lib/locale" #endif /* !defined LOCALE_HOME */ +#if HAVE_INCOMPATIBLE_CTIME_R +#define asctime_r _incompatible_asctime_r +#define ctime_r _incompatible_ctime_r +#endif /* HAVE_INCOMPATIBLE_CTIME_R */ + /* ** Nested includes */ @@ -78,6 +95,17 @@ static char privatehid[] = "@(#)private.h 7.48"; #include "libintl.h" #endif /* HAVE_GETTEXT - 0 */ +#if HAVE_SYS_WAIT_H - 0 +#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */ +#endif /* HAVE_SYS_WAIT_H - 0 */ + +#ifndef WIFEXITED +#define WIFEXITED(status) (((status) & 0xff) == 0) +#endif /* !defined WIFEXITED */ +#ifndef WEXITSTATUS +#define WEXITSTATUS(status) (((status) >> 8) & 0xff) +#endif /* !defined WEXITSTATUS */ + #if HAVE_UNISTD_H - 0 #include "unistd.h" /* for F_OK and R_OK */ #endif /* HAVE_UNISTD_H - 0 */ @@ -99,16 +127,6 @@ static char privatehid[] = "@(#)private.h 7.48"; */ /* -** SunOS 4.1.1 cc lacks const. -*/ - -#ifndef const -#ifndef __STDC__ -#define const -#endif /* !defined __STDC__ */ -#endif /* !defined const */ - -/* ** SunOS 4.1.1 cc lacks prototypes. */ @@ -262,8 +280,15 @@ char * scheck P((const char *string, const char *format)); #define TZ_DOMAIN "tz" #endif /* !defined TZ_DOMAIN */ +#if HAVE_INCOMPATIBLE_CTIME_R +#undef asctime_r +#undef ctime_r +char *asctime_r P((struct tm const *, char *)); +char *ctime_r P((time_t const *, char *)); +#endif /* HAVE_INCOMPATIBLE_CTIME_R */ + /* -** UNIX was a registered trademark of UNIX System Laboratories in 1993. +** UNIX was a registered trademark of The Open Group in 2003. */ #endif /* !defined PRIVATE_H */ diff --git a/usr.sbin/zic/tz-art.htm b/usr.sbin/zic/tz-art.htm new file mode 100644 index 000000000000..56f78ace2e0d --- /dev/null +++ b/usr.sbin/zic/tz-art.htm @@ -0,0 +1,278 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<!DOCTYPE html +PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-type" content='text/html; charset="US-ASCII"' /> +<title>Time and the Arts</title> +</head> +<body> +<h1>Time and the Arts</h1> +<address> +@(#)tz-art.htm 7.53 +</address> +<p> +Please send corrections to this web page to the +<a href="mailto:tz@elsie.nci.nih.gov">time zone mailing list</a>.</p> +<p> +See also <a href="tz-link.htm">Sources for Time Zone and Daylight Saving Time Data</a>.</p> +<hr /> +<p> +Data on recordings of "Save That Time," Russ Long, Serrob Publishing, BMI:</p> +<table> +<tr><td>Artist</td><td>Karrin Allyson</td></tr> +<tr><td>CD</td><td>I Didn't Know About You</td></tr> +<tr><td>Copyright Date</td><td>1993</td></tr> +<tr><td>Label</td><td>Concord Jazz, Inc.</td></tr> +<tr><td>ID</td><td>CCD-4543</td></tr> +<tr><td>Track Time</td><td>3:44</td></tr> +<tr><td>Personnel</td><td>Karrin Allyson, vocal; +Russ Long, piano; +Gerald Spaits, bass; +Todd Strait, drums</td></tr> +<tr><td>Notes</td><td>CD notes "additional lyric by Karrin Allyson; +arranged by Russ Long and Karrin Allyson"</td></tr> +<tr><td>ADO Rating</td><td>1 star</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A1fdovw9ta92k">AMG Rating</a></td><td>4 stars</td></tr> +<tr><td>Penguin Rating</td><td>3.5 stars</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Kevin Mahogany</td></tr> +<tr><td>CD</td><td>Double Rainbow</td></tr> +<tr><td>Copyright Date</td><td>1993</td></tr> +<tr><td>Label</td><td>Enja Records</td></tr> +<tr><td>ID</td><td>ENJ-7097 2</td></tr> +<tr><td>Track Time</td><td>6:27</td></tr> +<tr><td>Personnel</td><td>Kevin Mahogany, vocal; +Kenny Barron, piano; +Ray Drummond, bass; +Ralph Moore, tenor saxophone; +Lewis Nash, drums</td></tr> +<tr><td>ADO Rating</td><td>1.5 stars</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=Akikbikzjbb19">AMG Rating</a></td><td>3 stars</td></tr> +<tr><td>Penguin Rating</td><td>3 stars</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Joe Williams</td></tr> +<tr><td>CD</td><td>Here's to Life</td></tr> +<tr><td>Copyright Date</td><td>1994</td></tr> +<tr><td>Label</td><td>Telarc International Corporation</td></tr> +<tr><td>ID</td><td>CD-83357</td></tr> +<tr><td>Track Time</td><td>3:58</td></tr> +<tr><td>Personnel</td><td>Joe Williams, vocal +The Robert Farnon [39 piece] Orchestra</td></tr> +<tr><td>Notes</td><td>This CD is also available as part of a 3-CD package from +Telarc, "Triple Play" (CD-83461)</td></tr> +<tr><td>ADO Rating</td><td>black dot</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=Amyyvad6kt8w1">AMG Rating</a></td><td>2 stars</td></tr> +<tr><td>Penguin Rating</td><td>3 stars</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Charles Fambrough</td></tr> +<tr><td>CD</td><td>Keeper of the Spirit</td></tr> +<tr><td>Copyright Date</td><td>1995</td></tr> +<tr><td>Label</td><td>AudioQuest Music</td></tr> +<tr><td>ID</td><td>AQ-CD1033</td></tr> +<tr><td>Track Time</td><td>7:07</td></tr> +<tr><td>Personnel</td><td>Charles Fambrough, bass; +Joel Levine, tenor recorder; +Edward Simon, piano; +Lenny White, drums; +Marion Simon, percussion</td></tr> +<tr><td>Notes</td><td>On-line information and samples available at +<a href="http://wwmusic.com/~music/audioq/rel/1033.html">http://wwmusic.com/~music/audioq/rel/1033.html</a></td></tr> +<tr><td>ADO Rating</td><td>2 stars</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A5rkcikcjbb89">AMG Rating</a></td><td>unrated</td></tr> +<tr><td>Penguin Rating</td><td>3 stars</td></tr> +</table> +<hr /> +<p>Also of note:</p> +<table> +<tr><td>Artist</td><td>Holly Cole Trio</td></tr> +<tr><td>CD</td><td>Blame It On My Youth</td></tr> +<tr><td>Copyright Date</td><td>1992</td></tr> +<tr><td>Label</td><td>Manhattan</td></tr> +<tr><td>ID</td><td>CDP 7 97349 2</td></tr> +<tr><td>Total Time</td><td>37:45</td></tr> +<tr><td>Personnel</td><td>Holly Cole, voice; +Aaron Davis, piano; +David Piltch, string bass</td></tr> +<tr><td>Notes</td><td>Lyrical reference to "Eastern Standard Time" in +Tom Waits' "Purple Avenue"</td></tr> +<tr><td>ADO Rating</td><td>2.5 stars</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A3a9ds37ya3dg">AMG Rating</a></td><td>3 stars</td></tr> +<tr><td>Penguin Rating</td><td>unrated</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Milt Hinton</td></tr> +<tr><td>CD</td><td>Old Man Time</td></tr> +<tr><td>Copyright Date</td><td>1990</td></tr> +<tr><td>Label</td><td>Chiaroscuro</td></tr> +<tr><td>ID</td><td>CR(D) 310</td></tr> +<tr><td>Total Time</td><td>149:38 (two CDs)</td></tr> +<tr><td>Personnel</td><td>Milt Hinton, bass; +Doc Cheatham, Dizzy Gillespie, Clark Terry, trumpet; +Al Grey, trombone; +Eddie Barefield, Joe Camel (Flip Phillips), Buddy Tate, +clarinet and saxophone; +John Bunch, Red Richards, Norman Simmons, Derek Smith, +Ralph Sutton, piano; +Danny Barker, Al Casey, guitar; +Gus Johnson, Gerryck King, Bob Rosengarden, Jackie Williams, +drums; +Lionel Hampton, vibraphone; +Cab Calloway, Joe Williams, vocal; +Buck Clayton, arrangements</td></tr> +<tr><td>Notes</td><td>tunes include Old Man Time, Time After Time, +Sometimes I'm Happy, +A Hot Time in the Old Town Tonight, +Four or Five Times, Now's the Time, +Time on My Hands, This Time It's Us, +and Good Time Charlie +On-line samples available at +<a href="http://www.chiaroscurojazz.com/albuminfo.php4?albumid=49">http://www.chiaroscurojazz.com/albuminfo.php3?albumid=49</a></td></tr> +<tr><td>ADO Rating</td><td>3 stars</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A1cbyxdab8ola">AMG Rating</a></td><td>4.5 stars</td></tr> +<tr><td>Penguin Rating</td><td>3 stars</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Alan Broadbent</td></tr> +<tr><td>CD</td><td>Pacific Standard Time</td></tr> +<tr><td>Copyright Date</td><td>1995</td></tr> +<tr><td>Label</td><td>Concord Jazz, Inc.</td></tr> +<tr><td>ID</td><td>CCD-4664</td></tr> +<tr><td>Total Time</td><td>62:42</td></tr> +<tr><td>Personnel</td><td>Alan Broadbent, piano; +Putter Smith, Bass; +Frank Gibson, Jr., drums</td></tr> +<tr><td>Notes</td><td>The CD cover features an analemma for equation-of-time fans</td></tr> +<tr><td>ADO Rating</td><td>1 star</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=Asl8zefuk8gfo">AMG Rating</a></td><td>4 stars</td></tr> +<tr><td>Penguin Rating</td><td>3.5 stars</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Anthony Braxton/Richard Teitelbaum</td></tr> +<tr><td>CD</td><td>Silence/Time Zones</td></tr> +<tr><td>Copyright Date</td><td>1996</td></tr> +<tr><td>Label</td><td>Black Lion</td></tr> +<tr><td>ID</td><td>BLCD 760221</td></tr> +<tr><td>Total Time</td><td>72:58</td></tr> +<tr><td>Personnel</td><td>Anthony Braxton, sopranino and alto saxophones, +contrebasse clarinet, miscellaneous instruments; +Leo Smith, trumpet and miscellaneous instruments; +Leroy Jenkins, violin and miscellaneous instruments; +Richard Teitelbaum, modular moog and micromoog synthesizer</td></tr> +<tr><td>ADO Rating</td><td>black dot</td></tr> +<tr><td><a href="http://www.allmusic.com/cg/amg.dll?p=amg&sql=A5bkvu3xjan1k">AMG Rating</a></td><td>unrated</td></tr> +<tr><td> </td></tr> +<tr><td>Artist</td><td>Jules Verne</td></tr> +<tr><td>Book</td><td>Le Tour du Monde en Quatre-Vingts Jours +(Around the World in Eighty Days)</td></tr> +<tr><td>Notes</td><td>Wall-clock time plays a central role in the plot. +European readers of the 1870s clearly held the U.S. press in +deep contempt; the protagonists cross the U.S. without once +reading a paper. +An on-line French-language version of the book +"with illustrations from the original 1873 French-language edition" +is available at +<a href="http://fourmilab.ch/etexts/www/tdm80j">http://fourmilab.ch/etexts/www/tdm80j</a> +An on-line English-language translation of the book is available at +<a href="http://www.literature.org/Works/Jules-Verne/eighty">http://www.literature.org/Works/Jules-Verne/eighty</a></td></tr> +<tr><td> </td></tr> +<tr><td>Film</td><td>Bell Science - About Time</td></tr> +<tr><td>Notes</td><td>The Frank Baxter/Richard Deacon extravaganza +Information on ordering is available at +<a href="http://www.videoflicks.com/VF2/1035/1035893.ihtml">http://www.videoflicks.com/VF2/1035/1035893.ihtml</a></td></tr> +</table> +<hr /> +<ul> +<li> +An episode of "The Adventures of Superman" entitled "The Mysterious +Cube," first aired 1958-02-24, had Superman convincing the controllers +of WWV to broadcast time signals five minutes ahead of actual time; +doing so got a crook trying to beat the statute of limitations to +emerge a bit too early from the titular enclosure. +</li> +<li> +The 1960s ITC television series "The Prisoner" included an episode +entitled "The Chimes of Big Ben" in which our protagonist tumbled to +the fraudulent nature of a Poland-to-England escape upon hearing "Big +Ben" chiming on Polish local time. +</li> +<li> +The series "Seinfeld" included an episode entitled "The Susie," first +broadcast 1997-02-13, in which Kramer decides that daylight saving time +isn't coming fast enough, so he sets his watch ahead an hour. +</li> +<li> +The syndicated comic strip "Dilbert" featured an all-too-rare example of +time zone humor on 1998-03-14. +</li> +<li> +Surrealist artist Guy Billout's work "Date Line" appeared on page 103 +of the 1999-11 Atlantic Monthly. +</li> +<li> +"Gloom, Gloom, Go Away" by Walter Kirn appeared on page 106 of Time +Magazine's 2002-11-11 issue; among other things, it proposed +year-round DST as a way of lessening wintertime despair. +</li> +<li> +The "20 Hours in America" episode of "The West Wing," first aired 2002-09-25, +saw White House staffers stranded in Indiana; they thought they had time to +catch Air Force One but were done in by intra-Indiana local time changes. +</li> +<li> +"In what time zone would you find New York City?" was a $200 question on +the 1999-11-13 United States airing of "Who Wants to Be a Millionaire?" +"In 1883, what industry led the movement to divide the U.S. into four time +zones?" was a $32,000 question on the 2001-05-23 United States airing of +"Who Wants to Be a Millionaire?" At this rate, the million-dollar time-zone +question should have been asked 2002-06-04. +</li> +</ul> +<hr /> +<ul> +<li> +"We're been using the five-cent nickle in this country since 1492. +Now that's pretty near 100 years, daylight savings [sic]." +(Groucho Marx as Captain Spaulding in "Animal Crackers", 1930, +as noted by Will Fitzerald, wfitzgerald@ameritech.net) +</li> +<li> +"Good news." +"What did they do? Extend Daylight Saving Time year round?" +(Professional tanner George Hamilton, in dialog from a +May, 1999 episode of the syndicated television series "Baywatch") +</li> +<li> +"A fundamental belief held by Americans is that if you are on land, you +cannot be killed by a fish...So most Americans remain on land, believing +they're safe. Unfortunately, this belief—like so many myths, such as that +there's a reason for 'Daylight Saving Time'—is false." +(Dave Barry column, 2000-07-02) +</li> +<li> +"I once had sex for an hour and five minutes, but that was on the day +when you turn the clocks ahead." +(Garry Shandling, 52nd Annual Emmys, 2000-09-10) +</li> +<li> +"Would it impress you if I told you I invented Daylight Savings Time?" +("Sahjhan" to "Lilah" in dialog from the "Loyalty" episode of "Angel," +originally aired 2002-02-25) +</li> +<li> +"I thought you said Tulsa was a three hour flight." +"Well, you're forgetting about the time difference." +("Chandler" and "Joey" in dialog from the episode of "Friends" first +aired 2002-12-05) +</li> +<li> +"Is that a pertinent fact, +or are you trying to dazzle me with your command of time zones?" +(Kelsey Grammer as "Frasier Crane") +</li> +<li> +"Don't worry about the world coming to an end today. +It is already tomorrow in Australia." +(Charles M. Schulz, provided by Steve Summit) +</li> +</ul> +</body> +</html> diff --git a/usr.sbin/zic/tz-link.htm b/usr.sbin/zic/tz-link.htm new file mode 100644 index 000000000000..0e6307300709 --- /dev/null +++ b/usr.sbin/zic/tz-link.htm @@ -0,0 +1,443 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>Sources for Time Zone and Daylight Saving Time Data</title> +<link rel="schema.DC" href="http://purl.org/DC/elements/1.1/" /> +<meta http-equiv="Content-type" content='text/html; charset="US-ASCII"' /> +<meta name="DC.Creator" content="Eggert, Paul" /> +<meta name="DC.Contributor" content="Olson, Arthur David" /> +<meta name="DC.Date" content="2004-05-24" /> +<meta name="DC.Description" + content="Sources of information about time zones and daylight saving time" /> +<meta name="DC.Identifier" content="http://www.twinsun.com/tz/tz-link.htm" /> +<meta name="Keywords" + content="database,daylight saving,DST,time zone,timezone,tz,zoneinfo" /> +</head> +<body> +<h1>Sources for Time Zone and Daylight Saving Time Data</h1> +<address> +@(#)tz-link.htm 7.42 +</address> +<p> +Please send corrections to this web page to the +<a href="mailto:tz@elsie.nci.nih.gov">time zone mailing list</a>. +</p> +<h2>The <code>tz</code> database</h2> +<p> +The public-domain time zone database contains code and data +that represent the history of local time +for many representative locations around the globe. +It is updated periodically to reflect changes made by political bodies +to UTC offsets and daylight-saving rules. +This database (often called <code>tz</code> or <code>zoneinfo</code>) +is used by several implementations, +including +<a href="http://www.gnu.org/software/libc/">the GNU C Library</a> used in +<a href="http://www.linux.org/">GNU/Linux</a>, +<a href="http://www.freebsd.org/">FreeBSD</a>, +<a href="http://www.netbsd.org/">NetBSD</a>, +<a href="http://www.openbsd.org/">OpenBSD</a>, +<a href="http://www.cygwin.com/">Cygwin</a>, +<a href="http://www.delorie.com/djgpp/">DJGPP</a>, +<a href="http://www.hp.com/products1/unix/operating/">HP-UX</a>, +<a href="http://www.sgi.com/developers/technology/irix/">IRIX</a>, +<a href="http://www.apple.com/macosx/">Mac OS X</a>, +<a href="http://h71000.www7.hp.com/">OpenVMS</a>, +<a href="http://wwws.sun.com/software/solaris/">Solaris</a>, +<a href="http://www.tru64unix.compaq.com/">Tru64</a>, and +<a href="http://www.sco.com/products/unixware/">UnixWare</a>.</p> +<p> +Each location in the database represents a national region where all +clocks keeping local time have agreed since 1970. +Locations are identified by continent or ocean and then by the name of +the location, which is typically the largest city within the region. +For example, <code>America/New_York</code> +represents most of the US eastern time zone; +<code>America/Indianapolis</code> represents most of Indiana, which +uses eastern time without daylight saving time (DST); +<code>America/Detroit</code> represents most of Michigan, which uses +eastern time but with different DST rules in 1975; +and other entries represent smaller regions like Starke County, +Kentucky, which switched from central to eastern time in 1991. +To use the database, set the <code>TZ</code> environment variable to +the location's full name, e.g., <code>TZ="America/New_York"</code>.</p> +<p> +In the <code>tz</code> database's +<a href="ftp://elsie.nci.nih.gov/pub/">FTP distribution</a>, +the code is in the file <code>tzcode<var>C</var>.tar.gz</code>, +where <code><var>C</var></code> is the code's version; +similarly, the data are in <code>tzdata<var>D</var>.tar.gz</code>, +where <code><var>D</var></code> is the data's version. +The following shell commands download +these files to a GNU/Linux or similar host; see the downloaded +<code>README</code> file for what to do next.</p> +<pre style="margin-left: 2em"><code><a href="http://www.gnu.org/software/wget/">wget</a> 'ftp://elsie.nci.nih.gov/pub/tz*.tar.gz' +<a href="http://www.gnu.org/software/gzip/">gzip</a> -dc tzcode*.tar.gz | <a href="http://www.gnu.org/software/tar/">tar</a> -xf - +gzip -dc tzdata*.tar.gz | tar -xf - +</code></pre> +<p> +The code lets you compile the <code>tz</code> source files into +machine-readable binary files, one for each location. It also lets +you read a <code>tz</code> binary file and interpret time stamps for that +location.</p> +<p> +The data are by no means authoritative. If you find errors, please +send changes to the <a href="mailto:tz@elsie.nci.nih.gov">time zone +mailing list</a>. You can also <a +href="mailto:tz-request@elsie.nci.nih.gov">subscribe</a> to the +mailing list, retrieve the <a +href="ftp://elsie.nci.nih.gov/pub/tzarchive.gz">archive of old +messages</a> (in gzip compressed format), or retrieve <a +href="ftp://munnari.oz.au/pub/oldtz/">archived older versions of code +and data</a>.</p> +<p> +The Web has several other sources for time zone and daylight saving time data. +Here are some recent links that may be of interest. +</p> +<h2>Web pages using recent versions of the <code>tz</code> database</h2> +<ul> +<li><a href="http://twiki.org/cgi-bin/xtra/tzdate">Date and Time Gateway</a> +is a text-based point-and-click interface to tables of current time +throughout the world.</li> +<li>Fancier web interfaces, roughly in ascending order of complexity, include: +<ul> +<li><a href="http://www.hilink.com.au/times/">Local Times Around the +World</a></li> +<li><a href="http://www.convertit.com/Go/ConvertIt/World_Time/Current_Time.ASP">Current Time in 1000 Places</a></li> +<li><a href="http://timezoneconverter.com/">Time Zone Converter</a></li> +</ul></li> +<li><a href="http://www.holidayfestival.com/">The Worldwide Holiday +& Festival Site</a> lists DST-related clock changes along with +holidays.</li> +<li><a href="http://www.timeanddate.com/worldclock/">The World Clock - +Time Zones</a> +is a web interface to a time zone database derived from +<code>tz</code>'s.</li> +</ul> +<h2>Other time zone database formats</h2> +<ul> +<li>The <a href="ftp://ftp.rfc-editor.org/in-notes/rfc2445.txt"> +Internet Calendaring and Scheduling Core Object Specification +(iCalendar)</a> specification published by the <a +href="http://www.ietf.org/html.charters/calsch-charter.html">IETF +Calendaring and Scheduling Working Group (calsch)</a> covers time zone +data; see its VTIMEZONE calendar component.</li> +<li>The <a +href="http://lists.w3.org/Archives/Public/www-rdf-calendar/">www-rdf-calendar</a> +list discusses <a href="http://www.w3.org/RDF/">RDF</a>-based calendar +and group scheduling systems, and has a <a +href="http://www.w3.org/2002/12/cal/#tzd">workspace on time zone +data</a> converted from <code>tz</code>. An earlier <a +href="http://www.w3.org/2000/01/foo">schema</a> was sketched out by <a +href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a>.</li> +<li><a +href="http://www.calsch.org/ietf/archives/draft-ietf-calsch-many-xcal-02.txt">XCal</a> +was a draft <a href="http://www.w3.org/XML/">XML</a> document type +definition that corresponded to iCalendar.</li> +</ul> +<h2>Other <code>tz</code> compilers</h2> +<ul> +<li><a href="http://www.dachaplin.dsl.pipex.com/vzic">Vzic iCalendar +Timezone Converter</a> describes a program Vzic that compiles +<code>tz</code> source into iCalendar-compatible VTIMEZONE files. +Vzic is freely +available under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU +General Public License (GPL)</a>.</li> +<li><a +href="http://search.cpan.org/dist/DateTime-TimeZone/">DateTime::TimeZone</a> +contains a script <code>parse_olson</code> that compiles +<code>tz</code> source into <a href="http://www.perl.org/">Perl</a> +modules. It is part of the Perl <a +href="http://datetime.perl.org/">DateTime Project</a>, which is freely +available under both the GPL and the Perl <a +href="http://www.perl.com/language/misc/Artistic.html">Artistic +License</a>. DateTime::TimeZone also contains a script +<code>tests_from_zdump</code> that generates test cases for each clock +transition in the <code>tz</code> database.</li> +<li><a href="http://oss.software.ibm.com/icu/">International Components for +Unicode (ICU)</a> contains a C/C++ library for internationalization that +has a compiler from <samp>tz</samp> source into an ICU-specific format. +ICU is freely available under a BSD-style license.</li> +<li><a href="http://joda-time.sourceforge.net/">Joda Time - Java date +and time API</a> contains a class +<code>org.joda.time.tz.ZoneInfoCompiler</code> that compiles +<code>tz</code> source into a Joda-specific binary format. Joda Time +is freely available under a BSD-style license.</li> +</ul> +<h2>Other <code>tz</code> binary file readers</h2> +<ul> +<li>The <a href="http://www.gnu.org/software/libc/">GNU C Library</a> +has an independent, thread-safe implementation of +a <code>tz</code> binary file reader. +This library is freely available under the +<a href="http://www.gnu.org/copyleft/lesser.html"> +GNU Lesser General Public License (LGPL)</a>, +and is widely used in GNU/Linux systems.</li> +<li><a href="http://www.bmsi.com/java/#TZ">ZoneInfo.java</a> +is a <code>tz</code> binary file reader written in Java. +It is freely available under the GNU LGPL.</li> +<li><a href="http://s.keim.free.fr/tz/doc.html">Python time zones</a> +is a <code>tz</code> binary file reader written in <a +href="http://www.python.org/">Python</a>. It is freely available +under a BSD-style license.</li> +</ul> +<h2>Other <code>tz</code>-based time zone conversion software</h2> +<ul> +<li><a href="http://java.sun.com/">Sun Java</a> releases since 1.4 +contain a copy of a recent <samp>tz</samp> database in a Java-specific +format.</li> +<li><a +href="http://www1.tip.nl/~t876506/AboutTimeZonesHC.html">HyperCard +time zones calculator</a> is a HyperCard stack.</li> +<li><a +href="http://www.cimmyt.org/timezone/">World Time Explorer</a> is a +Microsoft Windows program.</li> +</ul> +<h2>Other time zone databases</h2> +<ul> +<li><a href="http://www.astro.com/cgi-bin/atlw3/aq.cgi?lang=e">Atlas Query +- Astrodienst</a> is Astrodienst's Web version of Shanks's +excellent time zone history atlases published in both <a +href="http://astrocom.com/software/pcatlas.php">computer</a> and <a +href="http://astrocom.com/books/xrefa.php#SHANKS">book</a> form by <a +href="http://astrocom.com/">Astro Communications Services</a>.</li> +<li><a href="http://worldtime.com/">WORLDTIME: interactive atlas, +time info, public holidays</a> +contains information on local time, sunrise and sunset, +and public holidays in several hundred cities around the world.</li> +<li><a href="http://www.worldtimeserver.com/">World Time Server</a> +is another time zone database.</li> +<li><a href="http://tycho.usno.navy.mil/tzones.html">World Time Zones</a> +contains data from the Time Service Department of the US Naval Observatory +(USNO), used as the source +for the <code>usno*</code> files in the <code>tz</code> distribution.</li> +<li><a href="http://www.airportcitycodes.com/aaa/">Airlines, Airplanes +and Airports</a> lists current standard times for thousands of +airports around the world. This seems to be derived from +the <a href="http://www.iata.org/sked/publications/">Standard +Schedules Information Manual (SSIM)</a> of the +the <a href="http://www.iata.org/">International Air Transport +Association</a>, +which gives current time zone rules for +all the airports served by commercial aviation.</li> +</ul> +<h2>Maps</h2> +<ul> +<li>The <a href="http://www.odci.gov/">United States Central +Intelligence Agency (CIA)</a> publishes a <a +href="http://www.odci.gov/cia/publications/factbook/reference_maps/pdf/time_zones.pdf">time +zone map</a>; the +<a +href="http://www.lib.utexas.edu/maps/world.html">Perry-Castañeda +Library Map Collection</a> +of the University of Texas at Austin has copies of +recent editions. +The pictorial quality is good, +but the maps do not indicate summer time, +and parts of the data are a few years out of date.</li> +<li><a href="http://worldtimezone.com/">World timezones map with +current time</a> +has several fancy time zone maps; it covers Russia particularly well. +The maps' pictorial quality is not quite as good as the CIA's +but the maps are more up to date.</li> +</ul> +<h2>Time zone boundaries</h2> +<ul> +<li><a href="http://home-4.tiscali.nl/~t876506/Multizones.html">Time +zone boundaries for multizone countries</a> summarizes legal +boundaries between time zones within countries.</li> +<li>Manifold.net's <a +href="http://www.manifold.net/download/freemaps.html">Free Maps and +GIS Data</a> includes a Manifold-format map of world time zone +boundaries distributed under the GPL. The GeoCommunity's <a +href="http://software.geocomm.com/data/intl_timezones.html">International +Time Zones</a> publishes the same data in other formats.</li> +<li>The US Geological Survey's National Atlas of the United States +publishes the <a href="http://www.nationalatlas.gov/timeznm.html">Time +Zones of the United States</a> in the public domain.</li> +<li>The GeoCommunity lists several commercial sources for <a +href="http://spatialnews.geocomm.com/features/timezones/">International +Time Zones and Time Zone Data</a>.</li> +</ul> +<h2>Civil time concepts and history</h2> +<ul> +<li><a href="http://physics.nist.gov/time">A Walk through Time</a> +surveys the evolution of timekeeping.</li> +<li><a href="http://webexhibits.org/daylightsaving/">About Daylight +Saving Time - History, rationale, laws and dates</a> +is an overall history of DST.</li> +<li><a href="http://toi.iriti.cnr.it/">The +Time of Internet</a> +describes time zones and daylight saving time, +with diagrams. +The time zone map is out of date, however.</li> +<li><a href="http://www.phys.uu.nl/~vgent/idl/idl.htm">A History of +the International Date Line</a> tells the story of the most important +time zone boundary.</li> +<li><a href="http://www.statoids.com/tconcept.html">Basic Time +Zone Concepts</a> discusses terminological issues behind time zones.</li> +</ul> +<h2>National histories of legal time</h2> +<dl> +<dt>Australia</dt> +<dd>The Community Relations Division of the New South Wales (NSW) +Attorney General's Department maintains a <a +href="http://www.lawlink.nsw.gov.au/crd.nsf/pages/time2">history of +daylight saving in NSW</a>.</dd> +<dt>Austria</dt> +<dd>The Federal Office of Metrology and Surveying publishes a +table of <a href="http://www.metrologie.at/pdf/sommerzeit.pdf" +hreflang="de">daylight saving time in Austria (in German)</a>.</dd> +<dt>Belgium</dt> +<dd>The Royal Observatory of Belgium maintains a table of <a +href="http://www.astro.oma.be/GENERAL/INFO/nli001a.html" +hreflang="nl">time in Belgium (in Dutch)</a>.</dd> +<dt>Brazil</dt> +<dd>The Time Service Department of the National Observatory +records <a href="http://pcdsh01.on.br/DecHV.html" +hreflang="pt-BR">Brazil's daylight saving time decrees (in +Portuguese)</a>.</dd> +<dt>Canada</dt> +<dd>The Institute for National Measurement Standards publishes current +and some older information about <a +href="http://inms-ienm.nrc-cnrc.gc.ca/time_services/daylight_savings_e.html">Time +Zones and Daylight Saving Time</a>.</dd> +<dt>Chile</dt> +<dd>WebExhibits publishes a <a +href="http://webexhibits.org/daylightsaving/chile.html" +hreflang="es">history of official time (in Spanish)</a> originally +written by the Chilean Hydrographic and Oceanographic Service.</dd> +<dt>Germany</dt> +<dd>The National Institute for Science and Technology maintains the <a +href="http://www.ptb.de/en/org/4/44/441/dars_e.htm">Realisation of +Legal Time in Germany</a>.</dd> +<dt>Israel</dt> +<dd>The Interior Ministry periodically issues <a +href="ftp://ftp.cs.huji.ac.il/pub/tz/announcements/" +hreflang="he">announcements (in Hebrew)</a>.</dd> +<dt>Mexico</dt> +<dd>The Investigation and Analysis Service of the Mexican Library of +Congress has published a <a +href="http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/" +hreflang="es">history of Mexican local time (in Spanish)</a>.</dd> +<dt>Malaysia</dt> +<dd>See Singapore below.</dd> +<dt>Netherlands</dt> +<dd><a href="http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm" +hreflang="nl">Legal time in the Netherlands (in Dutch)</a> +covers the history of local time in the Netherlands from ancient times.</dd> +<dt>New Zealand</dt> +<dd>The Department of Internal Affairs maintains a brief history <a +href="http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Resource-material-Information-We-Provide-About-Daylight-Saving">about +daylight saving</a>. The privately-maintained <a +href="http://www.astrologyhouse.co.nz/timechanges.htm">Time Changes in +New Zealand</a> has more details.</dd> +<dt>Singapore</dt> +<dd><a +href="http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html">Why +is Singapore in the "Wrong" Time Zone?</a> details the +history of legal time in Singapore and Malaysia.</dd> +<dt>United Kingdom</dt> +<dd><a +href="http://www.srcf.ucam.org/~jsm28/british-time/">History of +legal time in Britain</a> discusses in detail the country +with perhaps the best-documented history of clock adjustments. +The National Physical Laboratory also maintains an <a +href="http://www.npl.co.uk/time/summer_time_archive.html">archive +of summer time dates</a>.</dd> +</dl> +<h2>Precision timekeeping</h2> +<ul> +<li><a +href="http://literature.agilent.com/litwebbin/purl.cgi?org_id=tmo&pub_id=5965-7984E">The +Science of Timekeeping</a> is a thorough introduction +to the theory and practice of precision timekeeping.</li> +<li><a href="http://www.ntp.org/">NTP: The Network Time Protocol</a> +discusses how to synchronize clocks of +Internet hosts.</li> +<li><a href="http://gauss.gge.unb.ca/GMT.UT.and.the.RGO.txt" +charset="macintosh">A +Few Facts Concerning GMT, UT, and the RGO</a> +answers questions like "What is the difference between GMT and UTC?"</li> +<li><a +href="http://www.gb.nrao.edu/~rfisher/Ephemerides/times.html">Astronomical +Times</a> explains more abstruse astronomical time scales like TT, TCG, +and TDB.</li> +<li>The <a href="http://www.iau.org/">IAU</a>'s <a +href="http://www.iau-sofa.rl.ac.uk/">Standards Of Fundamental +Astronomy</a> (SOFA) initiative publishes Fortran code for converting +among time scales like TAI, TDB, TT and UTC.</li> +<li><a href="http://www.jpl.nasa.gov/basics/bsf2-3.htm">Basics of +Space Flight - Reference Systems - Time Conventions</a> +briefly explains interplanetary space flight timekeeping.</li> +<li><a +href="http://www.giss.nasa.gov/tools/mars24/help/notes.html">Technical +Notes on Mars Solar Time as Adopted by the Mars24 Sunclock</a> briefly +describes Mars Coordinated Time (MTC) and the diverse local time +scales used by each landed mission on Mars.</li> +<li><a +href="http://hpiers.obspm.fr/eop-pc/products/bulletins/bulletins.html">Bulletins +maintained by the IERS EOP (PC)</a> contains official publications of +the Earth Orientation Parameters Product Center of the +International Earth Rotation Service, the committee that decides +when leap seconds occur.</li> +<li>The <a +href="http://www.mail-archive.com/leapsecs@rom.usno.navy.mil/">Leap +Second Discussion List</a> covers McCarthy and Klepczynski's proposal +to discontinue leap seconds, published in <a +href="http://www.gpsworld.com/">GPS World</a> <strong>10</strong>, 11 +(1999-11), 50–57 and discussed further in R. A. Nelson et al., +<a href="http://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf">The +leap second: its history and possible future</a>, +<a href="http://www.bipm.fr/metrologia/metrologia.html">Metrologia</a> +<strong>38</strong> (2001), 509–529. +<a href="http://www.ucolick.org/~sla/leapsecs/onlinebib.html">The +Future of Leap Seconds</a> catalogs information about this +contentious issue.</li> +</ul> +<h2>Time notation</h2> +<ul> +<li> +<a href="http://www.cl.cam.ac.uk/~mgk25/iso-time.html">A Summary of +the International Standard Date and Time Notation</a> is a good +summary of ISO +8601:1988 - Data elements and interchange formats - Information interchange +- Representation of dates and times (which has been superseded by +<a href="http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=26780">ISO 8601:2000</a>).</li> +<li> +Section 3.3 of <a +href="ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt">Internet RFC 2822</a> +specifies the time notation used in email and <a +href="ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt">HTTP</a> headers.</li> +<li> +<a href="ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt">Internet RFC +3339</a> specifies an ISO 8601 profile for use in new Internet +protocols.</li> +<li> +<a href="http://www.exit109.com/~ghealton/y2k/yrexamples.html">The +Best of Dates, the Worst of Dates</a> covers many problems encountered +by software developers when handling dates and time stamps.</li> +<li> +Alphabetic time zone abbreviations should not be used as unique +identifiers for UTC offsets as they are ambiguous in practice. For +example, "EST" denotes 5 hours behind UTC in English-speaking North +America, but it denotes 10 or 11 hours ahead of UTC in Australia; +and French-speaking North Americans prefer "HNE" to "EST". For +compatibility with <a href="http://www.pasc.org/#POSIX">POSIX</a> the +<code>tz</code> database contains English abbreviations for all time +stamps but in many cases these are merely inventions of the database +maintainers.</li> +</ul> +<h2>Related indexes</h2> +<ul> +<li><a href="tz-art.htm">Time and the Arts</a></li> +<li><a href="http://dmoz.org/Reference/Time/">Open Directory - +Reference: Time</a></li> +<li><a href="http://directory.google.com/Top/Reference/Time/">Google Directory - Reference > Time</a></li> +<li><a href="http://dir.yahoo.com/Science/Measurements_and_Units/Time/">Yahoo! Science > Measurements and Units > Time</a></li> +</ul> +</body> +</html> diff --git a/usr.sbin/zic/zdump.8 b/usr.sbin/zic/zdump.8 index 33231291b1d0..dff68c2d8d88 100644 --- a/usr.sbin/zic/zdump.8 +++ b/usr.sbin/zic/zdump.8 @@ -4,6 +4,9 @@ zdump \- time zone dumper .SH SYNOPSIS .B zdump [ +.B \-\-version +] +[ .B \-v ] [ .B \-c @@ -16,6 +19,9 @@ named on the command line. .PP These options are available: .TP +.BI "\-\-version" +Output version information and exit. +.TP .B \-v For each .I zonename @@ -36,4 +42,4 @@ otherwise. Cut off the verbose output near the start of the given year. .SH "SEE ALSO" newctime(3), tzfile(5), zic(8) -.\" @(#)zdump.8 7.3 +.\" @(#)zdump.8 7.4 diff --git a/usr.sbin/zic/zdump.c b/usr.sbin/zic/zdump.c index 094e17251a54..a34caddbdf62 100644 --- a/usr.sbin/zic/zdump.c +++ b/usr.sbin/zic/zdump.c @@ -1,8 +1,4 @@ -#ifndef lint -#ifndef NOID -static char elsieid[] = "@(#)zdump.c 7.28"; -#endif /* !defined NOID */ -#endif /* !defined lint */ +static char elsieid[] = "@(#)zdump.c 7.31"; /* ** This code has been made independent of the rest of the time @@ -162,6 +158,11 @@ char * argv[]; (void) textdomain(TZ_DOMAIN); #endif /* HAVE_GETTEXT - 0 */ progname = argv[0]; + for (i = 1; i < argc; ++i) + if (strcmp(argv[i], "--version") == 0) { + (void) printf("%s\n", elsieid); + (void) exit(EXIT_SUCCESS); + } vflag = 0; cutoff = NULL; while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v') @@ -171,7 +172,7 @@ char * argv[]; if ((c != EOF && c != -1) || (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) { (void) fprintf(stderr, -_("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"), +_("%s: usage is %s [ --version ] [ -v ] [ -c cutoff ] zonename ...\n"), argv[0], argv[0]); (void) exit(EXIT_FAILURE); } @@ -263,9 +264,8 @@ _("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"), show(argv[i], t, TRUE); } if (fflush(stdout) || ferror(stdout)) { - (void) fprintf(stderr, _("%s: Error writing "), - argv[0]); - (void) perror(_("standard output")); + (void) fprintf(stderr, "%s: ", argv[0]); + (void) perror(_("Error writing standard output")); (void) exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); diff --git a/usr.sbin/zic/zic.8 b/usr.sbin/zic/zic.8 index b99afca5f12d..86b13544f971 100644 --- a/usr.sbin/zic/zic.8 +++ b/usr.sbin/zic/zic.8 @@ -4,6 +4,9 @@ zic \- time zone compiler .SH SYNOPSIS .B zic [ +.B \-\-version +] +[ .B \-v ] [ .B \-d @@ -44,6 +47,9 @@ the standard input is read. .PP These options are available: .TP +.BI "\-\-version" +Output version information and exit. +.TP .BI "\-d " directory Create time conversion information files in the named directory rather than in the standard directory named below. @@ -75,6 +81,10 @@ Complain if a year that appears in a data file is outside the range of years representable by .IR time (2) values. +Also complain if a time of 24:00 +(which cannot be handled by pre-1998 versions of +.IR zic ) +appears in the input. .TP .B \-s Limit time values stored in output files to values that are the same @@ -202,6 +212,7 @@ Recognized forms include: 2:00 time in hours and minutes 15:00 24-hour format time (for times after noon) 1:28:14 time in hours, minutes, and seconds +\- equivalent to 0 .fi .in -.5i .sp @@ -410,4 +421,4 @@ the earliest transition time recorded in the compiled file is correct. /usr/local/etc/zoneinfo standard directory used for created files .SH "SEE ALSO" newctime(3), tzfile(5), zdump(8) -.\" @(#)zic.8 7.18 +.\" @(#)zic.8 7.22 diff --git a/usr.sbin/zic/zic.c b/usr.sbin/zic/zic.c index 040a6053d29a..1a046ff3ed92 100644 --- a/usr.sbin/zic/zic.c +++ b/usr.sbin/zic/zic.c @@ -1,15 +1,17 @@ -#ifndef lint -#ifndef NOID -static char elsieid[] = "@(#)zic.c 7.96"; -#endif /* !defined NOID */ -#endif /* !defined lint */ +static char elsieid[] = "@(#)zic.c 7.116"; #include "private.h" #include "locale.h" #include "tzfile.h" -#ifdef unix -#include "sys/stat.h" /* for umask manifest constants */ -#endif /* defined unix */ + +#if HAVE_SYS_STAT_H +#include "sys/stat.h" +#endif +#ifdef S_IRUSR +#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) +#else +#define MKDIR_UMASK 0755 +#endif /* ** On some ancient hosts, predicates like `isspace(C)' are defined @@ -440,7 +442,7 @@ const char * const string; static void usage P((void)) { - (void) fprintf(stderr, _("%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n\t[ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), + (void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), progname, progname); (void) exit(EXIT_FAILURE); } @@ -472,6 +474,11 @@ char * argv[]; (void) textdomain(TZ_DOMAIN); #endif /* HAVE_GETTEXT - 0 */ progname = argv[0]; + for (i = 1; i < argc; ++i) + if (strcmp(argv[i], "--version") == 0) { + (void) printf("%s\n", elsieid); + (void) exit(EXIT_SUCCESS); + } while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1) switch (c) { default: @@ -563,12 +570,18 @@ _("%s: More than one -L option specified\n"), /* ** Make links. */ - for (i = 0; i < nlinks; ++i) + for (i = 0; i < nlinks; ++i) { + eat(links[i].l_filename, links[i].l_linenum); dolink(links[i].l_from, links[i].l_to); - if (lcltime != NULL) + } + if (lcltime != NULL) { + eat("command line", 1); dolink(lcltime, TZDEFAULT); - if (psxrules != NULL) + } + if (psxrules != NULL) { + eat("command line", 1); dolink(psxrules, TZDEFRULES); + } return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE; } @@ -605,12 +618,22 @@ const char * const tofile; if (mkdirs(toname) != 0) (void) exit(EXIT_FAILURE); + result = link(fromname, toname); -#if (HAVE_SYMLINK - 0) - if (result != 0) { - result = symlink(fromname, toname); +#if (HAVE_SYMLINK - 0) + if (result != 0 && + access(fromname, F_OK) == 0 && + !itsdir(fromname)) { + const char *s = tofile; + register char * symlinkcontents = NULL; + while ((s = strchr(s+1, '/')) != NULL) + symlinkcontents = ecatalloc(symlinkcontents, "../"); + symlinkcontents = ecatalloc(symlinkcontents, fromfile); + + result = symlink(symlinkcontents, toname); if (result == 0) warning(_("hard link failed, symbolic link used")); + ifree(symlinkcontents); } #endif if (result != 0) { @@ -908,6 +931,8 @@ const int signable; error(errstring); return 0; } + if (noise && hh == HOURSPERDAY) + warning(_("24:00 not handled by pre-1998 versions of zic")); return eitol(sign) * (eitol(hh * MINSPERHOUR + mm) * eitol(SECSPERMIN) + eitol(ss)); @@ -1132,14 +1157,15 @@ const int nfields; error(_("time before zero")); return; } - t = (time_t) dayoff * SECSPERDAY; - /* - ** Cheap overflow check. - */ - if (t / SECSPERDAY != dayoff) { - error(_("time overflow")); + if (dayoff < min_time / SECSPERDAY) { + error(_("time too small")); + return; + } + if (dayoff > max_time / SECSPERDAY) { + error(_("time too large")); return; } + t = (time_t) dayoff * SECSPERDAY; tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE); cp = fields[LP_CORR]; { @@ -1292,9 +1318,9 @@ const char * const timep; return; } else if (noise) { if (rp->r_loyear < min_year_representable) - warning(_("starting year too low to be represented")); + warning(_("ending year too low to be represented")); else if (rp->r_loyear > max_year_representable) - warning(_("starting year too high to be represented")); + warning(_("ending year too high to be represented")); } if (rp->r_loyear > rp->r_hiyear) { error(_("starting year greater than ending year")); @@ -1585,16 +1611,16 @@ const int zonecount; typecnt = 0; charcnt = 0; /* - ** A guess that may well be corrected later. - */ - stdoff = 0; - /* ** Thanks to Earl Chew (earl@dnd.icp.nec.com.au) ** for noting the need to unconditionally initialize startttisstd. */ startttisstd = FALSE; startttisgmt = FALSE; for (i = 0; i < zonecount; ++i) { + /* + ** A guess that may well be corrected later. + */ + stdoff = 0; zp = &zpfirst[i]; usestart = i > 0 && (zp - 1)->z_untiltime > min_time; useuntil = i < (zonecount - 1); @@ -1614,8 +1640,7 @@ const int zonecount; if (usestart) { addtt(starttime, type); usestart = FALSE; - } - else if (stdoff != 0) + } else if (stdoff != 0) addtt(min_time, type); } else for (year = min_year; year <= max_year; ++year) { if (useuntil && year > zp->z_untilrule.r_hiyear) @@ -1892,10 +1917,12 @@ const char * const type; buf = erealloc(buf, (int) (132 + strlen(yitcommand) + strlen(type))); (void) sprintf(buf, "%s %d %s", yitcommand, year, type); result = system(buf); - if (result == 0) - return TRUE; - if (result == (1 << 8)) - return FALSE; + if (WIFEXITED(result)) switch (WEXITSTATUS(result)) { + case 0: + return TRUE; + case 1: + return FALSE; + } error(_("Wild result from command execution")); (void) fprintf(stderr, _("%s: command was '%s', result was %d\n"), progname, buf, result); @@ -2112,18 +2139,17 @@ register const int wantedy; --i; } if (i < 0 || i >= len_months[isleap(y)][m]) { - error(_("no day in month matches rule")); - (void) exit(EXIT_FAILURE); + if (noise) + warning(_("rule goes past start/end of month--will not work with pre-2004 versions of zic")); } } if (dayoff < 0 && !TYPE_SIGNED(time_t)) return min_time; + if (dayoff < min_time / SECSPERDAY) + return min_time; + if (dayoff > max_time / SECSPERDAY) + return max_time; t = (time_t) dayoff * SECSPERDAY; - /* - ** Cheap overflow check. - */ - if (t / SECSPERDAY != dayoff) - return (dayoff > 0) ? max_time : min_time; return tadd(t, rp->r_tod); } @@ -2171,7 +2197,7 @@ char * const argname; ** created by some other multiprocessor, so we get ** to do extra checking. */ - if (mkdir(name, S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) != 0) { + if (mkdir(name, MKDIR_UMASK) != 0) { const char *e = strerror(errno); if (errno != EEXIST || !itsdir(name)) { @@ -2206,5 +2232,5 @@ const int i; } /* -** UNIX was a registered trademark of UNIX System Laboratories in 1993. +** UNIX was a registered trademark of The Open Group in 2003. */ |