diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-09-12 21:25:57 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-09-12 21:25:57 +0000 |
commit | 21583e9453ceb90054d9b518afbb893818b30316 (patch) | |
tree | 51d668852ed8b3d3fa73f9dbcbf098cdd1daffbd /main/stdtime/tzfile.h | |
parent | e6abcba2f2303cfae1315e11f5ba7b762c460569 (diff) |
Merged revisions 82285 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r82285 | tilghman | 2007-09-12 15:12:06 -0500 (Wed, 12 Sep 2007) | 4 lines
Working on issue #10531 exposed a rather nasty 64-bit issue on ast_mktime, so we
updated the localtime.c file from source. Next we'll have to write ast_strptime
to match.
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@82290 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/stdtime/tzfile.h')
-rw-r--r-- | main/stdtime/tzfile.h | 97 |
1 files changed, 48 insertions, 49 deletions
diff --git a/main/stdtime/tzfile.h b/main/stdtime/tzfile.h index f16d5a05c..2637ab960 100644 --- a/main/stdtime/tzfile.h +++ b/main/stdtime/tzfile.h @@ -2,17 +2,18 @@ #define TZFILE_H -/*! \brief - * This file is in the public domain, so clarified as of - * 1996-06-05 by - * \author Arthur David Olson (arthur_david_olson@nih.gov). - * - * \note This header is for use ONLY with the time conversion code. - * There is no guarantee that it will remain unchanged, - * or that it will remain at all. - * Do NOT copy it to any system include directory. - * Thank you! - */ +/* +** This file is in the public domain, so clarified as of +** 1996-06-05 by Arthur David Olson. +*/ + +/* +** This header is for use ONLY with the time conversion code. +** There is no guarantee that it will remain unchanged, +** or that it will remain at all. +** Do NOT copy it to any system include directory. +** Thank you! +*/ /* ** ID @@ -20,9 +21,7 @@ #ifndef lint #ifndef NOID -/* -static char tzfilehid[] = "@(#)tzfile.h 7.14"; -*/ +static char __attribute__((unused)) tzfilehid[] = "@(#)tzfile.h 8.1"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -31,11 +30,19 @@ static char tzfilehid[] = "@(#)tzfile.h 7.14"; */ #ifndef TZDIR -#define TZDIR "/usr/share/zoneinfo" /*!< Time zone object file directory */ +#ifdef SOLARIS +#define TZDIR "/usr/share/lib/zoneinfo" +#else +#ifdef FREEBSD +#define TZDIR "/usr/local/etc/zoneinfo" /* Time zone object file directory */ +#else +#define TZDIR "/usr/share/zoneinfo" +#endif /* defined FREEBSD */ +#endif /* defined SOLARIS */ #endif /* !defined TZDIR */ #ifndef TZDEFAULT -#define TZDEFAULT "/etc/localtime" +#define TZDEFAULT "localtime" #endif /* !defined TZDEFAULT */ #ifndef TZDEFRULES @@ -49,8 +56,9 @@ static char tzfilehid[] = "@(#)tzfile.h 7.14"; #define TZ_MAGIC "TZif" struct tzhead { - char tzh_magic[4]; /* TZ_MAGIC */ - char tzh_reserved[16]; /* reserved for future use */ + char tzh_magic[4]; /* TZ_MAGIC */ + char tzh_version[1]; /* '\0' or '2' as of 2005 */ + 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 */ char tzh_leapcnt[4]; /* coded number of leap seconds */ @@ -85,18 +93,22 @@ struct tzhead { */ /* +** If tzh_version is '2' or greater, the above is followed by a second instance +** of tzhead and a second instance of the data in which each coded transition +** time uses 8 rather than 4 chars, +** then a POSIX-TZ-environment-variable-style string for use in handling +** instants after the last transition time stored in the file +** (with nothing between the newlines if there is no POSIX representation for +** such instants). +*/ + +/* ** In the current implementation, "tzset()" refuses to deal with files that ** exceed any of the limits below. */ #ifndef TZ_MAX_TIMES -/* -** The TZ_MAX_TIMES value below is enough to handle a bit more than a -** year's worth of solar time (corrected daily to the nearest second) or -** 138 years of Pacific Presidential Election time -** (where there are three time zone transitions every fourth year). -*/ -#define TZ_MAX_TIMES 370 +#define TZ_MAX_TIMES 1200 #endif /* !defined TZ_MAX_TIMES */ #ifndef TZ_MAX_TYPES @@ -106,7 +118,7 @@ struct tzhead { #ifdef NOSOLAR /* ** Must be at least 14 for Europe/Riga as of Jan 12 1995, -** as noted by Earl Chew <earl@hpato.aus.hp.com>. +** as noted by Earl Chew. */ #define TZ_MAX_TYPES 20 /* Maximum number of local time types */ #endif /* !defined NOSOLAR */ @@ -157,33 +169,20 @@ struct tzhead { #define EPOCH_YEAR 1970 #define EPOCH_WDAY TM_THURSDAY -/* -** Accurate only for the past couple of centuries; -** that will probably do. -*/ - #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) -#ifndef USG - /* -** Use of the underscored variants may cause problems if you move your code to -** certain System-V-based systems; for maximum portability, use the -** underscore-free variants. The underscored variants are provided for -** backward compatibility only; they may disappear from future versions of -** this file. +** Since everything in isleap is modulo 400 (or a factor of 400), we know that +** isleap(y) == isleap(y % 400) +** and so +** isleap(a + b) == isleap((a + b) % 400) +** or +** isleap(a + b) == isleap(a % 400 + b % 400) +** This is true even if % means modulo rather than Fortran remainder +** (which is allowed by C89 but not C99). +** We use this to avoid addition overflow problems. */ -#define SECS_PER_MIN SECSPERMIN -#define MINS_PER_HOUR MINSPERHOUR -#define HOURS_PER_DAY HOURSPERDAY -#define DAYS_PER_WEEK DAYSPERWEEK -#define DAYS_PER_NYEAR DAYSPERNYEAR -#define DAYS_PER_LYEAR DAYSPERLYEAR -#define SECS_PER_HOUR SECSPERHOUR -#define SECS_PER_DAY SECSPERDAY -#define MONS_PER_YEAR MONSPERYEAR - -#endif /* !defined USG */ +#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) #endif /* !defined TZFILE_H */ |