Author: edwin
Date: Tue Oct 26 21:19:36 2010
New Revision: 214400
URL: http://svn.freebsd.org/changeset/base/214400

Log:
  Vendor import of tzcode2010n:
  
  * Makefile        Change LOCALTIME default from "Factory" to "GMT";
                    do not compile "factory" file
                    (but keep it in the distribution).
  * Theory          Remove reference to "Factory" zone.
  * localtime.c     Initialize ttinfo structures filled by tzparse
                    (thanks to Ravindra for reporting a valgrind warning).
  * zic.c           Fix generation of POSIX strings for zones with
                    rules using "weekday<=n" forms of dates
                    (thanks to Lei Liu for finding the problem).
                    Also, limit output for non-POSIX-specificable zones
                    defined to follow the same rules every year.
                    (Note that no zones of either of the above types
                    appear in the distribution; these changes cater to
                    add-on zones).
  
  Obtained from:        ftp://elsie.nci.nih.gov/pub/

Modified:
  vendor/tzcode/dist/libc/stdtime/localtime.c
  vendor/tzcode/dist/unused/Makefile
  vendor/tzcode/dist/zic/Theory
  vendor/tzcode/dist/zic/zic.c

Modified: vendor/tzcode/dist/libc/stdtime/localtime.c
==============================================================================
--- vendor/tzcode/dist/libc/stdtime/localtime.c Tue Oct 26 20:23:29 2010        
(r214399)
+++ vendor/tzcode/dist/libc/stdtime/localtime.c Tue Oct 26 21:19:36 2010        
(r214400)
@@ -5,7 +5,7 @@
 
 #ifndef lint
 #ifndef NOID
-static char    elsieid[] = "@(#)localtime.c    8.14";
+static char    elsieid[] = "@(#)localtime.c    8.15";
 #endif /* !defined NOID */
 #endif /* !defined lint */
 
@@ -914,6 +914,7 @@ const int                   lastditch;
        register unsigned char *        typep;
        register char *                 cp;
        register int                    load_result;
+       static struct ttinfo            zttinfo;
 
        INITIALIZE(dstname);
        stdname = name;
@@ -986,6 +987,7 @@ const int                   lastditch;
                        /*
                        ** Two transitions per year, from EPOCH_YEAR forward.
                        */
+                       sp->ttis[0] = sp->ttis[1] = zttinfo;
                        sp->ttis[0].tt_gmtoff = -dstoffset;
                        sp->ttis[0].tt_isdst = 1;
                        sp->ttis[0].tt_abbrind = stdlen + 1;
@@ -1099,8 +1101,8 @@ const int                 lastditch;
                        }
                        /*
                        ** Finally, fill in ttis.
-                       ** ttisstd and ttisgmt need not be handled.
                        */
+                       sp->ttis[0] = sp->ttis[1] = zttinfo;
                        sp->ttis[0].tt_gmtoff = -stdoffset;
                        sp->ttis[0].tt_isdst = FALSE;
                        sp->ttis[0].tt_abbrind = 0;
@@ -1113,6 +1115,7 @@ const int                 lastditch;
                dstlen = 0;
                sp->typecnt = 1;                /* only standard time */
                sp->timecnt = 0;
+               sp->ttis[0] = zttinfo;
                sp->ttis[0].tt_gmtoff = -stdoffset;
                sp->ttis[0].tt_isdst = 0;
                sp->ttis[0].tt_abbrind = 0;

Modified: vendor/tzcode/dist/unused/Makefile
==============================================================================
--- vendor/tzcode/dist/unused/Makefile  Tue Oct 26 20:23:29 2010        
(r214399)
+++ vendor/tzcode/dist/unused/Makefile  Tue Oct 26 21:19:36 2010        
(r214400)
@@ -1,5 +1,5 @@
 # <pre>
-# @(#)Makefile 8.8
+# @(#)Makefile 8.9
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -12,7 +12,7 @@
 #      make zonenames
 # to get a list of the values you can use for LOCALTIME.
 
-LOCALTIME=     Factory
+LOCALTIME=     GMT
 
 # If you want something other than Eastern United States time as a template
 # for handling POSIX-style time zone environment variables,
@@ -262,8 +262,8 @@ MANS=               newctime.3 newstrftime.3 newtzset
 DOCS=          README Theory $(MANS) date.1 Makefile
 PRIMARY_YDATA= africa antarctica asia australasia \
                europe northamerica southamerica
-YDATA=         $(PRIMARY_YDATA) pacificnew etcetera factory backward
-NDATA=         systemv
+YDATA=         $(PRIMARY_YDATA) pacificnew etcetera backward
+NDATA=         systemv factory
 SDATA=         solar87 solar88 solar89
 TDATA=         $(YDATA) $(NDATA) $(SDATA)
 TABDATA=       iso3166.tab zone.tab

Modified: vendor/tzcode/dist/zic/Theory
==============================================================================
--- vendor/tzcode/dist/zic/Theory       Tue Oct 26 20:23:29 2010        
(r214399)
+++ vendor/tzcode/dist/zic/Theory       Tue Oct 26 21:19:36 2010        
(r214400)
@@ -1,4 +1,4 @@
-@(#)Theory     8.4
+@(#)Theory     8.5
 This file is in the public domain, so clarified as of
 2009-05-17 by Arthur David Olson.
 
@@ -287,8 +287,7 @@ and these older names are still supporte
 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'),
-and `Factory' (see the file `factory').
+`WET', `CET', `MET', and `EET' (see the file `europe').
 
 
 ----- Time zone abbreviations -----

Modified: vendor/tzcode/dist/zic/zic.c
==============================================================================
--- vendor/tzcode/dist/zic/zic.c        Tue Oct 26 20:23:29 2010        
(r214399)
+++ vendor/tzcode/dist/zic/zic.c        Tue Oct 26 21:19:36 2010        
(r214400)
@@ -3,7 +3,7 @@
 ** 2006-07-17 by Arthur David Olson.
 */
 
-static char    elsieid[] = "@(#)zic.c  8.22";
+static char    elsieid[] = "@(#)zic.c  8.24";
 
 #include "private.h"
 #include "locale.h"
@@ -1881,16 +1881,16 @@ const long                      gmtoff;
                register int    week;
 
                if (rp->r_dycode == DC_DOWGEQ) {
-                       week = 1 + rp->r_dayofmonth / DAYSPERWEEK;
-                       if ((week - 1) * DAYSPERWEEK + 1 != rp->r_dayofmonth)
+                       if ((rp->r_dayofmonth % DAYSPERWEEK) != 1)
                                return -1;
+                       week = 1 + rp->r_dayofmonth / DAYSPERWEEK;
                } else if (rp->r_dycode == DC_DOWLEQ) {
                        if (rp->r_dayofmonth == len_months[1][rp->r_month])
                                week = 5;
                        else {
-                               week = 1 + rp->r_dayofmonth / DAYSPERWEEK;
-                               if (week * DAYSPERWEEK - 1 != rp->r_dayofmonth)
+                               if ((rp->r_dayofmonth % DAYSPERWEEK) != 0)
                                        return -1;
+                               week = rp->r_dayofmonth / DAYSPERWEEK;
                        }
                } else  return -1;      /* "cannot happen" */
                (void) sprintf(result, "M%d.%d.%d",
@@ -2018,6 +2018,7 @@ const int                 zonecount;
        register char *                 envvar;
        register int                    max_abbr_len;
        register int                    max_envvar_len;
+       register int                    prodstic; /* all rules are min to max */
 
        max_abbr_len = 2 + max_format_len + max_abbrvar_len;
        max_envvar_len = 2 * max_abbr_len + 5 * 9;
@@ -2032,6 +2033,7 @@ const int                 zonecount;
        timecnt = 0;
        typecnt = 0;
        charcnt = 0;
+       prodstic = zonecount == 1;
        /*
        ** Thanks to Earl Chew
        ** for noting the need to unconditionally initialize startttisstd.
@@ -2053,6 +2055,8 @@ const int                 zonecount;
                                updateminmax(rp->r_loyear);
                        if (rp->r_hiwasnum)
                                updateminmax(rp->r_hiyear);
+                       if (rp->r_lowasnum || rp->r_hiwasnum)
+                               prodstic = FALSE;
                }
        }
        /*
@@ -2075,6 +2079,16 @@ wp = ecpyalloc(_("no POSIX environment v
                if (max_year <= INT_MAX - YEARSPERREPEAT)
                        max_year += YEARSPERREPEAT;
                else    max_year = INT_MAX;
+               /*
+               ** Regardless of any of the above,
+               ** for a "proDSTic" zone which specifies that its rules
+               ** always have and always will be in effect,
+               ** we only need one cycle to define the zone.
+               */
+               if (prodstic) {
+                       min_year = 1900;
+                       max_year = min_year + YEARSPERREPEAT;
+               }
        }
        /*
        ** For the benefit of older systems,
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to