Update from tzcode2009i.
authorUlrich Drepper <drepper@redhat.com>
Mon, 15 Jun 2009 15:49:18 +0000 (08:49 -0700)
committerUlrich Drepper <drepper@redhat.com>
Mon, 15 Jun 2009 15:49:18 +0000 (08:49 -0700)
ChangeLog
timezone/tzselect.ksh
timezone/zdump.c
timezone/zic.c

index d96e17a..dcd7444 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2009-06-15  Ulrich Drepper  <drepper@redhat.com>
 
+       * timezone/tzselect.ksh: Update from tzcode2009i.
+       * timezone/zdump.c: Likewise.
+       * timezone/zic.c: Likewise.
+
        * timezone/africa: Update from tzdata2009i.
        * timezone/antarctica: Likewise.
        * timezone/asia: Likewise.
index b99af82..57bf707 100644 (file)
@@ -1,6 +1,6 @@
 #! @KSH@
 
-# '@(#)tzselect.ksh    8.1'
+VERSION='@(#)tzselect.ksh      8.2'
 
 # Ask the user about the time zone, and output the resulting TZ value to stdout.
 # Interact with the user via stderr and stdin.
        exit 1
 }
 
+if [ "$1" = "--help" ]; then
+    cat <<EOF
+Usage: tzselect
+Select a time zone interactively.
+
+Report bugs to tz@elsie.nci.nih.gov.
+EOF
+    exit 0
+elif [ "$1" = "--version" ]; then
+    cat <<EOF
+tzselect $VERSION
+EOF
+    exit 0
+fi
+
 # Make sure the tables are readable.
 TZ_COUNTRY_TABLE=$TZDIR/iso3166.tab
 TZ_ZONE_TABLE=$TZDIR/zone.tab
index 82c91e4..7122bbf 100644 (file)
@@ -1,4 +1,9 @@
-static char    elsieid[] = "@(#)zdump.c        8.6";
+/*
+** This file is in the public domain, so clarified as of
+** 2009-05-17 by Arthur David Olson.
+*/
+
+static char    elsieid[] = "@(#)zdump.c        8.9";
 
 /*
 ** This code has been made independent of the rest of the time
@@ -230,6 +235,17 @@ const char * const zone;
        warned = TRUE;
 }
 
+static void
+usage(const char *progname, FILE *stream, int status)
+{
+       (void) fprintf(stream,
+_("%s: usage is %s [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n\
+\n\
+Report bugs to tz@elsie.nci.nih.gov.\n"),
+                      progname, progname);
+       exit(status);
+}
+
 int
 main(argc, argv)
 int    argc;
@@ -266,6 +282,8 @@ char *      argv[];
                if (strcmp(argv[i], "--version") == 0) {
                        (void) printf("%s\n", elsieid);
                        exit(EXIT_SUCCESS);
+               } else if (strcmp(argv[i], "--help") == 0) {
+                       usage(progname, stdout, EXIT_SUCCESS);
                }
        vflag = 0;
        cutarg = NULL;
@@ -275,10 +293,7 @@ char *     argv[];
                else    cutarg = optarg;
        if ((c != EOF && c != -1) ||
                (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
-                       (void) fprintf(stderr,
-_("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
-                               progname, progname);
-                       exit(EXIT_FAILURE);
+                       usage(progname, stderr, EXIT_FAILURE);
        }
        if (vflag) {
                if (cutarg != NULL) {
@@ -349,13 +364,9 @@ _("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
                        (void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);
                }
                for ( ; ; ) {
-                       if (t >= cuthitime)
+                       if (t >= cuthitime || t >= cuthitime - SECSPERHOUR * 12)
                                break;
                        newt = t + SECSPERHOUR * 12;
-                       if (newt >= cuthitime)
-                               break;
-                       if (newt <= t)
-                               break;
                        newtmp = localtime(&newt);
                        if (newtmp != NULL)
                                newtm = *newtmp;
index 5f8028e..01d9f13 100644 (file)
@@ -3,7 +3,7 @@
 ** 2006-07-17 by Arthur David Olson.
 */
 
-static char    elsieid[] = "@(#)zic.c  8.17";
+static char    elsieid[] = "@(#)zic.c  8.19";
 
 #include "private.h"
 #include "locale.h"
@@ -156,7 +156,7 @@ static void         stringzone(char * result,
                        const struct zone * zp, int ntzones);
 static void    setboundaries(void);
 static zic_t   tadd(zic_t t1, long t2);
-static void    usage(void);
+static void    usage(FILE *stream, int status);
 static void    writezone(const char * name, const char * string);
 static int     yearistype(int year, const char * type);
 
@@ -454,13 +454,15 @@ const char * const        string;
 }
 
 static void
-usage(void)
+usage(FILE *stream, int status)
 {
-       (void) fprintf(stderr, _("%s: usage is %s \
-[ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
-\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
-               progname, progname);
-       exit(EXIT_FAILURE);
+       (void) fprintf(stream, _("%s: usage is %s \
+[ --version ] [ --help ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
+\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n\
+\n\
+Report bugs to tz@elsie.nci.nih.gov.\n"),
+                      progname, progname);
+       exit(status);
 }
 
 static const char *    psxrules;
@@ -498,11 +500,13 @@ char *    argv[];
                if (strcmp(argv[i], "--version") == 0) {
                        (void) printf("%s\n", elsieid);
                        exit(EXIT_SUCCESS);
+               } else if (strcmp(argv[i], "--help") == 0) {
+                       usage(stdout, EXIT_SUCCESS);
                }
        while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
                switch (c) {
                        default:
-                               usage();
+                               usage(stderr, EXIT_FAILURE);
                        case 'd':
                                if (directory == NULL)
                                        directory = optarg;
@@ -561,7 +565,7 @@ _("%s: More than one -L option specified\n"),
                                break;
                }
        if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
-               usage();        /* usage message by request */
+               usage(stderr, EXIT_FAILURE);    /* usage message by request */
        if (directory == NULL)
                directory = TZDIR;
        if (yitcommand == NULL)
@@ -1991,7 +1995,7 @@ const int                 zonecount;
        min_year = max_year = EPOCH_YEAR;
        if (leapseen) {
                updateminmax(leapminyear);
-               updateminmax(leapmaxyear);
+               updateminmax(leapmaxyear + (leapmaxyear < INT_MAX));
        }
        for (i = 0; i < zonecount; ++i) {
                zp = &zpfirst[i];