]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/tools/tzcode/tzfile.h
ICU-57163.0.1.tar.gz
[apple/icu.git] / icuSources / tools / tzcode / tzfile.h
index 3a9eee305a53cc7bea4c9abb390a631b6fd16e76..911130eb939a1abe95470616dad6675ecbaf40f0 100644 (file)
 ** Thank you!
 */
 
-/*
-** ID
-*/
-
-#ifndef lint
-#ifndef NOID
-static char    tzfilehid[] = "@(#)tzfile.h     8.1";
-#endif /* !defined NOID */
-#endif /* !defined lint */
-
 /*
 ** Information about time zone files.
 */
@@ -49,7 +39,7 @@ static char   tzfilehid[] = "@(#)tzfile.h     8.1";
 
 struct tzhead {
        char    tzh_magic[4];           /* TZ_MAGIC */
-       char    tzh_version[1];         /* '\0' or '2' as of 2005 */
+       char    tzh_version[1];         /* '\0' or '2' or '3' as of 2013 */
        char    tzh_reserved[15];       /* reserved--must be zero */
        char    tzh_ttisgmtcnt[4];      /* coded number of trans. time flags */
        char    tzh_ttisstdcnt[4];      /* coded number of trans. time flags */
@@ -65,7 +55,7 @@ struct tzhead {
 **     tzh_timecnt (char [4])s         coded transition times a la time(2)
 **     tzh_timecnt (unsigned char)s    types of local time starting at above
 **     tzh_typecnt repetitions of
-**             one (char [4])          coded UTC offset in seconds
+**             one (char [4])          coded UT offset in seconds
 **             one (unsigned char)     used to set tm_isdst
 **             one (unsigned char)     that's an abbreviation list index
 **     tzh_charcnt (char)s             '\0'-terminated zone abbreviations
@@ -78,7 +68,7 @@ struct tzhead {
 **                                     if absent, transition times are
 **                                     assumed to be wall clock time
 **     tzh_ttisgmtcnt (char)s          indexed by type; if TRUE, transition
-**                                     time is UTC, if FALSE,
+**                                     time is UT, if FALSE,
 **                                     transition time is local time
 **                                     if absent, transition times are
 **                                     assumed to be local time
@@ -92,6 +82,13 @@ struct tzhead {
 ** instants after the last transition time stored in the file
 ** (with nothing between the newlines if there is no POSIX representation for
 ** such instants).
+**
+** If tz_version is '3' or greater, the above is extended as follows.
+** First, the POSIX TZ string's hour offset may range from -167
+** through 167 as compared to the POSIX-required 0 through 24.
+** Second, its DST start time may be January 1 at 00:00 and its stop
+** time December 31 at 24:00 plus the difference between DST and
+** standard time, indicating DST all year.
 */
 
 /*
@@ -100,20 +97,12 @@ struct tzhead {
 */
 
 #ifndef TZ_MAX_TIMES
-#define TZ_MAX_TIMES   1200
+#define TZ_MAX_TIMES   2000
 #endif /* !defined TZ_MAX_TIMES */
 
 #ifndef TZ_MAX_TYPES
-#ifndef NOSOLAR
+/* This must be at least 17 for Europe/Samara and Europe/Vilnius.  */
 #define TZ_MAX_TYPES   256 /* Limited by what (unsigned char)'s can hold */
-#endif /* !defined NOSOLAR */
-#ifdef NOSOLAR
-/*
-** Must be at least 14 for Europe/Riga as of Jan 12 1995,
-** as noted by Earl Chew.
-*/
-#define TZ_MAX_TYPES   20      /* Maximum number of local time types */
-#endif /* !defined NOSOLAR */
 #endif /* !defined TZ_MAX_TYPES */
 
 #ifndef TZ_MAX_CHARS
@@ -132,7 +121,7 @@ struct tzhead {
 #define DAYSPERNYEAR   365
 #define DAYSPERLYEAR   366
 #define SECSPERHOUR    (SECSPERMIN * MINSPERHOUR)
-#define SECSPERDAY     ((long) SECSPERHOUR * HOURSPERDAY)
+#define SECSPERDAY     ((int_fast32_t) SECSPERHOUR * HOURSPERDAY)
 #define MONSPERYEAR    12
 
 #define TM_SUNDAY      0