This bounced the first time.<br><br clear="all">Mark<br>
<br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Mark Davis</b> <span dir="ltr"><<a href="mailto:mark.edward.davis@gmail.com">mark.edward.davis@gmail.com</a>></span><br>
Date: Wed, Jan 14, 2009 at 18:10<br>Subject: Re: proposed time zone package changes<br>To: <a href="mailto:tz@elsie.nci.nih.gov">tz@elsie.nci.nih.gov</a><br>Cc: <a href="mailto:tz@lecserver.nci.nih.gov">tz@lecserver.nci.nih.gov</a><br>
<br><br>I object to adding Geneva.<br><br>The rule has always been to only add new IDs when they are distinct after Jan 1, 1970. This does not appear to meet that criterion. As a matter of fact, not so long ago some IDs were dropped precisely because they did not meet that criterion.<br>

<br>(If we added any and all IDs without a cutoff date, we would have a disastrous blowup in the number of IDs.)<br><font color="#888888"><br clear="all">Mark</font><div><div></div><div class="Wj3C7c"><br>
<br><br><div class="gmail_quote">On Wed, Jan 14, 2009 at 10:51, Arthur David Olson <span dir="ltr"><<a href="mailto:olsona@elsie.nci.nih.gov" target="_blank">olsona@elsie.nci.nih.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Here are proposed time zone package changes, preceded by a list of files<br>
to be changed and reasons for the changes. If these pass muster,<br>
tzcode2009a.tar.gz and <a href="http://tzdata2009a.tar.tz" target="_blank">tzdata2009a.tar.tz</a> will appear a week from today<br>
(on an unusual Wednesday since both Monday and Tuesday are leave days for<br>
U. S. federal employees in the Washington, D. C. area).<br>
<br>
                                --ado<br>
<br>
*       asia<br>
                change Katmandu to Kathmandu<br>
<br>
*       backward<br>
                provide Katmandu link<br>
<br>
*       europe<br>
                correct Swiss rules; add Europe/Geneva<br>
<br>
*       northamerica<br>
                clearer definition of Cuban transitions (no binary change)<br>
                Resolute changes abbreviation (but not time) twice a year<br>
<br>
*       strftime.c<br>
                c format warning fix<br>
<br>
*       tzselect.ksh<br>
                --help and --version handling<br>
<br>
*       zdump.c<br>
                --help and --version handling<br>
<br>
*       zic.c<br>
                --help and --version handling<br>
                fix infinite loop caused by overflow/optimization interaction<br>
<br>
*       zone.tab<br>
                Change Katmandu to Kathmandu<br>
                Change Resolute from Eastern Time to Eastern Standard Time<br>
                Add Europe/Geneva<br>
<br>
diff -r -c old/asia new/asia<br>
*** old/asia    Wed Oct  8 08:35:57 2008<br>
--- new/asia    Wed Jan 14 11:15:49 2009<br>
***************<br>
*** 1,4 ****<br>
! # @(#)asia    8.24<br>
  # <pre><br>
<br>
  # This data is by no means authoritative; if you think you know better,<br>
--- 1,4 ----<br>
! # @(#)asia    8.25<br>
  # <pre><br>
<br>
  # This data is by no means authoritative; if you think you know better,<br>
***************<br>
*** 1474,1480 ****<br>
<br>
  # Nepal<br>
  # Zone        NAME            GMTOFF  RULES   FORMAT  [UNTIL]<br>
! Zone  Asia/Katmandu   5:41:16 -       LMT     1920<br>
                        5:30    -       IST     1986<br>
                        5:45    -       NPT     # Nepal Time<br>
<br>
--- 1474,1480 ----<br>
<br>
  # Nepal<br>
  # Zone        NAME            GMTOFF  RULES   FORMAT  [UNTIL]<br>
! Zone  Asia/Kathmandu  5:41:16 -       LMT     1920<br>
                        5:30    -       IST     1986<br>
                        5:45    -       NPT     # Nepal Time<br>
<br>
diff -r -c old/backward new/backward<br>
*** old/backward        Tue Sep  9 22:33:26 2008<br>
--- new/backward        Wed Jan 14 11:15:49 2009<br>
***************<br>
*** 1,4 ****<br>
! # @(#)backward        8.6<br>
<br>
  # This file provides links between current names for time zones<br>
  # and their old names.  Many names changed in late 1993.<br>
--- 1,4 ----<br>
! # @(#)backward        8.7<br>
<br>
  # This file provides links between current names for time zones<br>
  # and their old names.  Many names changed in late 1993.<br>
***************<br>
*** 24,29 ****<br>
--- 24,30 ----<br>
  Link  Asia/Ashgabat           Asia/Ashkhabad<br>
  Link  Asia/Chongqing          Asia/Chungking<br>
  Link  Asia/Dhaka              Asia/Dacca<br>
+ Link  Asia/Kathmandu          Asia/Katmandu<br>
  Link  Asia/Kolkata            Asia/Calcutta<br>
  Link  Asia/Macau              Asia/Macao<br>
  Link  Asia/Jerusalem          Asia/Tel_Aviv<br>
diff -r -c old/europe new/europe<br>
*** old/europe  Tue Sep  9 22:33:25 2008<br>
--- new/europe  Wed Jan 14 13:37:27 2009<br>
***************<br>
*** 1,4 ****<br>
! # @(#)europe  8.18<br>
  # <pre><br>
<br>
  # This data is by no means authoritative; if you think you know better,<br>
--- 1,4 ----<br>
! # @(#)europe  8.19<br>
  # <pre><br>
<br>
  # This data is by no means authoritative; if you think you know better,<br>
***************<br>
*** 2313,2328 ****<br>
  # mean time in preference to apparent time -- Geneva from 1780 ....<br>
  # Rule        NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S<br>
  # From Whitman (who writes ``Midnight?''):<br>
! Rule  Swiss   1940    only    -       Nov      2      0:00    1:00    S<br>
! Rule  Swiss   1940    only    -       Dec     31      0:00    0       -<br>
  # From Shanks & Pottenger:<br>
! Rule  Swiss   1941    1942    -       May     Sun>=1  2:00    1:00    S<br>
! Rule  Swiss   1941    1942    -       Oct     Sun>=1  0:00    0       -<br>
  # Zone        NAME            GMTOFF  RULES   FORMAT  [UNTIL]<br>
  Zone  Europe/Zurich   0:34:08 -       LMT     1848 Sep 12<br>
                        0:29:44 -       BMT     1894 Jun # Bern Mean Time<br>
                        1:00    Swiss   CE%sT   1981<br>
                        1:00    EU      CE%sT<br>
<br>
  # Turkey<br>
<br>
--- 2313,2384 ----<br>
  # mean time in preference to apparent time -- Geneva from 1780 ....<br>
  # Rule        NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S<br>
  # From Whitman (who writes ``Midnight?''):<br>
! # Rule        Swiss   1940    only    -       Nov      2      0:00    1:00    S<br>
! # Rule        Swiss   1940    only    -       Dec     31      0:00    0       -<br>
  # From Shanks & Pottenger:<br>
! # Rule        Swiss   1941    1942    -       May     Sun>=1  2:00    1:00    S<br>
! # Rule        Swiss   1941    1942    -       Oct     Sun>=1  0:00    0       -<br>
!<br>
! # From Alois Treindl (2008-12-17):<br>
! # I have researched the DST usage in Switzerland during the 1940ies.<br>
! #<br>
! # As I wrote in an earlier message, I suspected the current tzdata values<br>
! # to be wrong. This is now verified.<br>
! #<br>
! # I have found copies of the original ruling by the Swiss Federal<br>
! # government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss<br>
! # federal law collection)...<br>
! #<br>
! # DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am<br>
! # DST ended on Monday 6 Oct 1941, 2:00 am by shifting the clocks to 1:00 am.<br>
! #<br>
! # DST began on Monday, 4 May 1942 at 01:00 am<br>
! # DST ended on Monday, 5 Oct 1942 at 02:00 am<br>
! #<br>
! # There was no DST in 1940, I have checked the law collection carefully.<br>
! # It is also indicated by the fact that the 1942 entry in the law<br>
! # collection points back to 1941 as a reference, but no reference to any<br>
! # other years are made.<br>
! #<br>
! # Newspaper articles I have read in the archives on 6 May 1941 reported<br>
! # about the introduction of DST (Sommerzeit in German) during the previous<br>
! # night as an absolute novelty, because this was the first time that such<br>
! # a thing had happened in Switzerland.<br>
! #<br>
! # I have also checked 1916, because one book source (Gabriel, Traite de<br>
! # l'heure dans le monde) claims that Switzerland had DST in 1916. This is<br>
! # false, no official document could be found. Probably Gabriel got misled<br>
! # by references to Germany, which introduced DST in 1916 for the first time.<br>
! #<br>
! # The tzdata rules for Switzerland must be changed to:<br>
! # Rule  Swiss   1941    1942    -       May     Mon>=1  1:00    1:00    S<br>
! # Rule  Swiss   1941    1942    -       Oct     Mon>=1  2:00    0       -<br>
! #<br>
! # The 1940 rules must be deleted.<br>
! #<br>
! # One further detail for Switzerland, which is probably out of scope for<br>
! # most users of tzdata:<br>
! # The zone file<br>
! # Zone    Europe/Zurich   0:34:08 -       LMT     1848 Sep 12<br>
! #                          0:29:44 -       BMT     1894 Jun #Bern Mean Time<br>
! #                          1:00    Swiss   CE%sT   1981<br>
! #                          1:00    EU      CE%sT<br>
! # describes all of Switzerland correctly, with the exception of<br>
! # the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not<br>
! # follow Bern Mean Time but kept its own local mean time.<br>
! # To represent this, an extra zone would be needed.<br>
!<br>
! # Rule        NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S<br>
! Rule  Swiss   1941    1942    -       May     Mon>=1  1:00    1:00    S<br>
! Rule  Swiss   1941    1942    -       Oct     Mon>=1  2:00    0       -<br>
  # Zone        NAME            GMTOFF  RULES   FORMAT  [UNTIL]<br>
  Zone  Europe/Zurich   0:34:08 -       LMT     1848 Sep 12<br>
                        0:29:44 -       BMT     1894 Jun # Bern Mean Time<br>
                        1:00    Swiss   CE%sT   1981<br>
                        1:00    EU      CE%sT<br>
+ Zone  Europe/Geneva   0:24:56 -       LMT     1894 Jun # avoid GMT<br>
+                       1:00    Swiss   CE%sT   1981<br>
+                       1:00    EU      CE%sT<br>
<br>
  # Turkey<br>
<br>
diff -r -c old/northamerica new/northamerica<br>
*** old/northamerica    Tue Sep  9 16:05:43 2008<br>
--- new/northamerica    Wed Jan 14 12:32:15 2009<br>
***************<br>
*** 1,4 ****<br>
! # @(#)northamerica    8.24<br>
  # <pre><br>
<br>
  # also includes Central America and the Caribbean<br>
--- 1,4 ----<br>
! # @(#)northamerica    8.26<br>
  # <pre><br>
<br>
  # also includes Central America and the Caribbean<br>
***************<br>
*** 1742,1751 ****<br>
  # The individual that answered the phone confirmed that the clocks did not<br>
  # move at the end of daylight saving on October 29/2006.  He also told me that<br>
  # the clocks did not move this past weekend (March 11/2007)....<br>
- #<br>
- # America/Resolute should use the "Canada" Rule up to October 29/2006.<br>
- # After that it should be fixed on Eastern Standard Time until further notice.<br>
<br>
  # Rule        NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S<br>
  Rule  NT_YK   1918    only    -       Apr     14      2:00    1:00    D<br>
  Rule  NT_YK   1918    only    -       Oct     27      2:00    0       S<br>
--- 1742,1755 ----<br>
  # The individual that answered the phone confirmed that the clocks did not<br>
  # move at the end of daylight saving on October 29/2006.  He also told me that<br>
  # the clocks did not move this past weekend (March 11/2007)....<br>
<br>
+ # From Chris Walton (2008-11-13):<br>
+ # ...the residents of Resolute believe that they are changing "time zones"<br>
+ # twice a year.  In winter months, local time is qualified with "Eastern<br>
+ # Time" which is really "Eastern Standard Time (UTC-5)".  In summer<br>
+ # months, local time is qualified with "Central Time" which is really<br>
+ # "Central Daylight Time (UTC-5)"...<br>
+<br>
  # Rule        NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S<br>
  Rule  NT_YK   1918    only    -       Apr     14      2:00    1:00    D<br>
  Rule  NT_YK   1918    only    -       Oct     27      2:00    0       S<br>
***************<br>
*** 1772,1782 ****<br>
                        -6:00   Canada  C%sT    2000 Oct 29 2:00<br>
                        -5:00   Canada  E%sT<br>
  # aka Qausuittuq<br>
  Zone America/Resolute 0       -       zzz     1947 Aug 31 # Resolute founded<br>
                        -6:00   NT_YK   C%sT    2000 Oct 29 2:00<br>
                        -5:00   -       EST     2001 Apr  1 3:00<br>
                        -6:00   Canada  C%sT    2006 Oct 29 2:00<br>
!                       -5:00   -       EST<br>
  # aka Kangiqiniq<br>
  Zone America/Rankin_Inlet 0   -       zzz     1957 # Rankin Inlet founded<br>
                        -6:00   NT_YK   C%sT    2000 Oct 29 2:00<br>
--- 1776,1789 ----<br>
                        -6:00   Canada  C%sT    2000 Oct 29 2:00<br>
                        -5:00   Canada  E%sT<br>
  # aka Qausuittuq<br>
+ # Rule        NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S<br>
+ Rule  Resolute 2006   max     -       Nov     Sun>=1  2:00    0       ES<br>
+ Rule  Resolute 2007   max     -       Mar     Sun>=8  2:00    0       CD<br>
  Zone America/Resolute 0       -       zzz     1947 Aug 31 # Resolute founded<br>
                        -6:00   NT_YK   C%sT    2000 Oct 29 2:00<br>
                        -5:00   -       EST     2001 Apr  1 3:00<br>
                        -6:00   Canada  C%sT    2006 Oct 29 2:00<br>
!                       -5:00   Resolute        %sT<br>
  # aka Kangiqiniq<br>
  Zone America/Rankin_Inlet 0   -       zzz     1957 # Rankin Inlet founded<br>
                        -6:00   NT_YK   C%sT    2000 Oct 29 2:00<br>
***************<br>
*** 2280,2286 ****<br>
  Rule  Cuba    1997    only    -       Oct     12      0:00s   0       S<br>
  Rule  Cuba    1998    1999    -       Mar     lastSun 0:00s   1:00    D<br>
  Rule  Cuba    1998    2003    -       Oct     lastSun 0:00s   0       S<br>
! Rule  Cuba    2000    2006    -       Apr     Sun>=1  0:00s   1:00    D<br>
  Rule  Cuba    2006    max     -       Oct     lastSun 0:00s   0       S<br>
  Rule  Cuba    2007    only    -       Mar     Sun>=8  0:00s   1:00    D<br>
  Rule  Cuba    2008    max     -       Mar     Sun>=15 0:00s   1:00    D<br>
--- 2287,2293 ----<br>
  Rule  Cuba    1997    only    -       Oct     12      0:00s   0       S<br>
  Rule  Cuba    1998    1999    -       Mar     lastSun 0:00s   1:00    D<br>
  Rule  Cuba    1998    2003    -       Oct     lastSun 0:00s   0       S<br>
! Rule  Cuba    2000    2004    -       Apr     Sun>=1  0:00s   1:00    D<br>
  Rule  Cuba    2006    max     -       Oct     lastSun 0:00s   0       S<br>
  Rule  Cuba    2007    only    -       Mar     Sun>=8  0:00s   1:00    D<br>
  Rule  Cuba    2008    max     -       Mar     Sun>=15 0:00s   1:00    D<br>
diff -r -c old/strftime.c new/strftime.c<br>
*** old/strftime.c      Mon Sep 15 09:24:42 2008<br>
--- new/strftime.c      Wed Jan 14 12:33:56 2009<br>
***************<br>
*** 1,6 ****<br>
  #ifndef lint<br>
  #ifndef NOID<br>
! static char   elsieid[] = "@(#)strftime.c     8.2";<br>
  /*<br>
  ** Based on the UCB version with the ID appearing below.<br>
  ** This is ANSIish only when "multibyte character == plain character".<br>
--- 1,6 ----<br>
  #ifndef lint<br>
  #ifndef NOID<br>
! static char   elsieid[] = "@(#)strftime.c     8.3";<br>
  /*<br>
  ** Based on the UCB version with the ID appearing below.<br>
  ** This is ANSIish only when "multibyte character == plain character".<br>
***************<br>
*** 216,222 ****<br>
                                {<br>
                                int warn2 = IN_SOME;<br>
<br>
!                               pt = _fmt(Locale->c_fmt, t, pt, ptlim, warnp);<br>
                                if (warn2 == IN_ALL)<br>
                                        warn2 = IN_THIS;<br>
                                if (warn2 > *warnp)<br>
--- 216,222 ----<br>
                                {<br>
                                int warn2 = IN_SOME;<br>
<br>
!                               pt = _fmt(Locale->c_fmt, t, pt, ptlim, &warn2);<br>
                                if (warn2 == IN_ALL)<br>
                                        warn2 = IN_THIS;<br>
                                if (warn2 > *warnp)<br>
diff -r -c old/tzselect.ksh new/tzselect.ksh<br>
*** old/tzselect.ksh    Tue Sep  9 22:33:17 2008<br>
--- new/tzselect.ksh    Wed Jan 14 10:56:24 2009<br>
***************<br>
*** 1,6 ****<br>
  #! /bin/ksh<br>
<br>
! # '@(#)tzselect.ksh   8.1'<br>
<br>
  # Ask the user about the time zone, and output the resulting TZ value to stdout.<br>
  # Interact with the user via stderr and stdin.<br>
--- 1,6 ----<br>
  #! /bin/ksh<br>
<br>
! VERSION='@(#)tzselect.ksh     8.2'<br>
<br>
  # Ask the user about the time zone, and output the resulting TZ value to stdout.<br>
  # Interact with the user via stderr and stdin.<br>
***************<br>
*** 45,50 ****<br>
--- 45,65 ----<br>
        exit 1<br>
  }<br>
<br>
+ if [ "$1" = "--help" ]; then<br>
+     cat <<EOF<br>
+ Usage: tzselect<br>
+ Select a time zone interactively.<br>
+<br>
+ Report bugs to <a href="mailto:tz@elsie.nci.nih.gov" target="_blank">tz@elsie.nci.nih.gov</a>.<br>
+ EOF<br>
+     exit 0<br>
+ elif [ "$1" = "--version" ]; then<br>
+     cat <<EOF<br>
+ tzselect $VERSION<br>
+ EOF<br>
+     exit 0<br>
+ fi<br>
+<br>
  # Make sure the tables are readable.<br>
  TZ_COUNTRY_TABLE=$TZDIR/iso3166.tab<br>
  TZ_ZONE_TABLE=$TZDIR/zone.tab<br>
diff -r -c old/zdump.c new/zdump.c<br>
*** old/zdump.c Tue Sep  9 22:33:24 2008<br>
--- new/zdump.c Wed Jan 14 11:01:56 2009<br>
***************<br>
*** 1,4 ****<br>
! static char   elsieid[] = "@(#)zdump.c        8.6";<br>
<br>
  /*<br>
  ** This code has been made independent of the rest of the time<br>
--- 1,4 ----<br>
! static char   elsieid[] = "@(#)zdump.c        8.8";<br>
<br>
  /*<br>
  ** This code has been made independent of the rest of the time<br>
***************<br>
*** 230,235 ****<br>
--- 230,246 ----<br>
        warned = TRUE;<br>
  }<br>
<br>
+ static void<br>
+ usage(const char *progname, FILE *stream, int status)<br>
+ {<br>
+       (void) fprintf(stream,<br>
+ _("%s: usage is %s [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n\<br>
+ \n\<br>
+ Report bugs to tz@elsie.nci.nih.gov.\n"),<br>
+                      progname, progname);<br>
+       exit(status);<br>
+ }<br>
+<br>
  int<br>
  main(argc, argv)<br>
  int   argc;<br>
***************<br>
*** 266,271 ****<br>
--- 277,284 ----<br>
                if (strcmp(argv[i], "--version") == 0) {<br>
                        (void) printf("%s\n", elsieid);<br>
                        exit(EXIT_SUCCESS);<br>
+               } else if (strcmp(argv[i], "--help") == 0) {<br>
+                       usage(progname, stdout, EXIT_SUCCESS);<br>
                }<br>
        vflag = 0;<br>
        cutarg = NULL;<br>
***************<br>
*** 275,284 ****<br>
                else    cutarg = optarg;<br>
        if ((c != EOF && c != -1) ||<br>
                (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {<br>
!                       (void) fprintf(stderr,<br>
! _("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),<br>
!                               progname, progname);<br>
!                       exit(EXIT_FAILURE);<br>
        }<br>
        if (vflag) {<br>
                if (cutarg != NULL) {<br>
--- 288,294 ----<br>
                else    cutarg = optarg;<br>
        if ((c != EOF && c != -1) ||<br>
                (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {<br>
!                       usage(progname, stderr, EXIT_FAILURE);<br>
        }<br>
        if (vflag) {<br>
                if (cutarg != NULL) {<br>
***************<br>
*** 349,361 ****<br>
                        (void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);<br>
                }<br>
                for ( ; ; ) {<br>
!                       if (t >= cuthitime)<br>
                                break;<br>
                        newt = t + SECSPERHOUR * 12;<br>
-                       if (newt >= cuthitime)<br>
-                               break;<br>
-                       if (newt <= t)<br>
-                               break;<br>
                        newtmp = localtime(&newt);<br>
                        if (newtmp != NULL)<br>
                                newtm = *newtmp;<br>
--- 359,367 ----<br>
                        (void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);<br>
                }<br>
                for ( ; ; ) {<br>
!                       if (t >= cuthitime || t >= cuthitime - SECSPERHOUR * 12)<br>
                                break;<br>
                        newt = t + SECSPERHOUR * 12;<br>
                        newtmp = localtime(&newt);<br>
                        if (newtmp != NULL)<br>
                                newtm = *newtmp;<br>
diff -r -c old/zic.c new/zic.c<br>
*** old/zic.c   Tue Sep  9 22:33:18 2008<br>
--- new/zic.c   Wed Jan 14 10:59:48 2009<br>
***************<br>
*** 3,9 ****<br>
  ** 2006-07-17 by Arthur David Olson.<br>
  */<br>
<br>
! static char   elsieid[] = "@(#)zic.c  8.17";<br>
<br>
  #include "private.h"<br>
  #include "locale.h"<br>
--- 3,9 ----<br>
  ** 2006-07-17 by Arthur David Olson.<br>
  */<br>
<br>
! static char   elsieid[] = "@(#)zic.c  8.18";<br>
<br>
  #include "private.h"<br>
  #include "locale.h"<br>
***************<br>
*** 156,162 ****<br>
                        const struct zone * zp, int ntzones);<br>
  static void   setboundaries(void);<br>
  static zic_t  tadd(zic_t t1, long t2);<br>
! static void   usage(void);<br>
  static void   writezone(const char * name, const char * string);<br>
  static int    yearistype(int year, const char * type);<br>
<br>
--- 156,162 ----<br>
                        const struct zone * zp, int ntzones);<br>
  static void   setboundaries(void);<br>
  static zic_t  tadd(zic_t t1, long t2);<br>
! static void   usage(FILE *stream, int status);<br>
  static void   writezone(const char * name, const char * string);<br>
  static int    yearistype(int year, const char * type);<br>
<br>
***************<br>
*** 454,466 ****<br>
  }<br>
<br>
  static void<br>
! usage(void)<br>
  {<br>
!       (void) fprintf(stderr, _("%s: usage is %s \<br>
! [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\<br>
! \t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),<br>
!               progname, progname);<br>
!       exit(EXIT_FAILURE);<br>
  }<br>
<br>
  static const char *   psxrules;<br>
--- 454,468 ----<br>
  }<br>
<br>
  static void<br>
! usage(FILE *stream, int status)<br>
  {<br>
!       (void) fprintf(stream, _("%s: usage is %s \<br>
! [ --version ] [ --help ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\<br>
! \t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n\<br>
! \n\<br>
! Report bugs to tz@elsie.nci.nih.gov.\n"),<br>
!                      progname, progname);<br>
!       exit(status);<br>
  }<br>
<br>
  static const char *   psxrules;<br>
***************<br>
*** 498,508 ****<br>
                if (strcmp(argv[i], "--version") == 0) {<br>
                        (void) printf("%s\n", elsieid);<br>
                        exit(EXIT_SUCCESS);<br>
                }<br>
        while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)<br>
                switch (c) {<br>
                        default:<br>
!                               usage();<br>
                        case 'd':<br>
                                if (directory == NULL)<br>
                                        directory = optarg;<br>
--- 500,512 ----<br>
                if (strcmp(argv[i], "--version") == 0) {<br>
                        (void) printf("%s\n", elsieid);<br>
                        exit(EXIT_SUCCESS);<br>
+               } else if (strcmp(argv[i], "--help") == 0) {<br>
+                       usage(stdout, EXIT_SUCCESS);<br>
                }<br>
        while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)<br>
                switch (c) {<br>
                        default:<br>
!                               usage(stderr, EXIT_FAILURE);<br>
                        case 'd':<br>
                                if (directory == NULL)<br>
                                        directory = optarg;<br>
***************<br>
*** 561,567 ****<br>
                                break;<br>
                }<br>
        if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)<br>
!               usage();        /* usage message by request */<br>
        if (directory == NULL)<br>
                directory = TZDIR;<br>
        if (yitcommand == NULL)<br>
--- 565,571 ----<br>
                                break;<br>
                }<br>
        if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)<br>
!               usage(stderr, EXIT_FAILURE);    /* usage message by request */<br>
        if (directory == NULL)<br>
                directory = TZDIR;<br>
        if (yitcommand == NULL)<br>
diff -r -c old/zone.tab new/zone.tab<br>
*** old/zone.tab        Tue Oct 21 12:10:25 2008<br>
--- new/zone.tab        Wed Jan 14 13:40:29 2009<br>
***************<br>
*** 1,4 ****<br>
! # @(#)zone.tab        8.21<br>
  #<br>
  # TZ zone descriptions<br>
  #<br>
--- 1,4 ----<br>
! # @(#)zone.tab        8.25<br>
  #<br>
  # TZ zone descriptions<br>
  #<br>
***************<br>
*** 116,122 ****<br>
  CA    +4823-08915     America/Thunder_Bay     Eastern Time - Thunder Bay, Ontario<br>
  CA    +6344-06828     America/Iqaluit Eastern Time - east Nunavut - most locations<br>
  CA    +6608-06544     America/Pangnirtung     Eastern Time - Pangnirtung, Nunavut<br>
! CA    +744144-0944945 America/Resolute        Eastern Time - Resolute, Nunavut<br>
  CA    +484531-0913718 America/Atikokan        Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut<br>
  CA    +624900-0920459 America/Rankin_Inlet    Central Time - central Nunavut<br>
  CA    +4953-09709     America/Winnipeg        Central Time - Manitoba & west Ontario<br>
--- 116,122 ----<br>
  CA    +4823-08915     America/Thunder_Bay     Eastern Time - Thunder Bay, Ontario<br>
  CA    +6344-06828     America/Iqaluit Eastern Time - east Nunavut - most locations<br>
  CA    +6608-06544     America/Pangnirtung     Eastern Time - Pangnirtung, Nunavut<br>
! CA    +744144-0944945 America/Resolute        Eastern Standard Time - Resolute, Nunavut<br>
  CA    +484531-0913718 America/Atikokan        Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut<br>
  CA    +624900-0920459 America/Rankin_Inlet    Central Time - central Nunavut<br>
  CA    +4953-09709     America/Winnipeg        Central Time - Manitoba & west Ontario<br>
***************<br>
*** 136,142 ****<br>
  CD    -1140+02728     Africa/Lubumbashi       east Dem. Rep. of Congo<br>
  CF    +0422+01835     Africa/Bangui<br>
  CG    -0416+01517     Africa/Brazzaville<br>
! CH    +4723+00832     Europe/Zurich<br>
  CI    +0519-00402     Africa/Abidjan<br>
  CK    -2114-15946     Pacific/Rarotonga<br>
  CL    -3327-07040     America/Santiago        most locations<br>
--- 136,143 ----<br>
  CD    -1140+02728     Africa/Lubumbashi       east Dem. Rep. of Congo<br>
  CF    +0422+01835     Africa/Bangui<br>
  CG    -0416+01517     Africa/Brazzaville<br>
! CH    +4723+00832     Europe/Zurich   most locations<br>
! CH    +4614+00604     Europe/Geneva   Geneva only<br>
  CI    +0519-00402     Africa/Abidjan<br>
  CK    -2114-15946     Pacific/Rarotonga<br>
  CL    -3327-07040     America/Santiago        most locations<br>
***************<br>
*** 292,298 ****<br>
  NI    +1209-08617     America/Managua<br>
  NL    +5222+00454     Europe/Amsterdam<br>
  NO    +5955+01045     Europe/Oslo<br>
! NP    +2743+08519     Asia/Katmandu<br>
  NR    -0031+16655     Pacific/Nauru<br>
  NU    -1901-16955     Pacific/Niue<br>
  NZ    -3652+17446     Pacific/Auckland        most locations<br>
--- 293,299 ----<br>
  NI    +1209-08617     America/Managua<br>
  NL    +5222+00454     Europe/Amsterdam<br>
  NO    +5955+01045     Europe/Oslo<br>
! NP    +2743+08519     Asia/Kathmandu<br>
  NR    -0031+16655     Pacific/Nauru<br>
  NU    -1901-16955     Pacific/Niue<br>
  NZ    -3652+17446     Pacific/Auckland        most locations<br>
<br>
</blockquote></div><br>
</div></div></div><br>