tzfile.h revision 92991
12708Swollman#ifndef TZFILE_H 22708Swollman#define TZFILE_H 32708Swollman 492991Sobrien 52708Swollman/* 617209Swollman** This file is in the public domain, so clarified as of 742989Swollman** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). 892991Sobrien** 992991Sobrien** $FreeBSD: head/lib/libc/stdtime/tzfile.h 92991 2002-03-22 23:42:05Z obrien $ 1017209Swollman*/ 1117209Swollman 1217209Swollman/* 132708Swollman** This header is for use ONLY with the time conversion code. 142708Swollman** There is no guarantee that it will remain unchanged, 152708Swollman** or that it will remain at all. 162708Swollman** Do NOT copy it to any system include directory. 172708Swollman** Thank you! 182708Swollman*/ 192708Swollman 202708Swollman/* 212708Swollman** ID 222708Swollman*/ 232708Swollman 242708Swollman#ifndef lint 252708Swollman#ifndef NOID 2617209Swollman/* 2742989Swollmanstatic char tzfilehid[] = "@(#)tzfile.h 7.14"; 2817209Swollman*/ 292708Swollman#endif /* !defined NOID */ 302708Swollman#endif /* !defined lint */ 312708Swollman 322708Swollman/* 332708Swollman** Information about time zone files. 342708Swollman*/ 352708Swollman 362708Swollman#ifndef TZDIR 372713Swollman#define TZDIR "/usr/share/zoneinfo" /* Time zone object file directory */ 382708Swollman#endif /* !defined TZDIR */ 392708Swollman 402708Swollman#ifndef TZDEFAULT 412713Swollman#define TZDEFAULT "/etc/localtime" 422708Swollman#endif /* !defined TZDEFAULT */ 432708Swollman 442708Swollman#ifndef TZDEFRULES 452708Swollman#define TZDEFRULES "posixrules" 462708Swollman#endif /* !defined TZDEFRULES */ 472708Swollman 482708Swollman/* 492708Swollman** Each file begins with. . . 502708Swollman*/ 512708Swollman 5242989Swollman#define TZ_MAGIC "TZif" 5342989Swollman 542708Swollmanstruct tzhead { 5542989Swollman char tzh_magic[4]; /* TZ_MAGIC */ 5642989Swollman char tzh_reserved[16]; /* reserved for future use */ 579936Swollman char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ 582708Swollman char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ 592708Swollman char tzh_leapcnt[4]; /* coded number of leap seconds */ 602708Swollman char tzh_timecnt[4]; /* coded number of transition times */ 612708Swollman char tzh_typecnt[4]; /* coded number of local time types */ 622708Swollman char tzh_charcnt[4]; /* coded number of abbr. chars */ 632708Swollman}; 642708Swollman 652708Swollman/* 662708Swollman** . . .followed by. . . 672708Swollman** 682708Swollman** tzh_timecnt (char [4])s coded transition times a la time(2) 692708Swollman** tzh_timecnt (unsigned char)s types of local time starting at above 702708Swollman** tzh_typecnt repetitions of 7142989Swollman** one (char [4]) coded UTC offset in seconds 722708Swollman** one (unsigned char) used to set tm_isdst 732708Swollman** one (unsigned char) that's an abbreviation list index 742708Swollman** tzh_charcnt (char)s '\0'-terminated zone abbreviations 752708Swollman** tzh_leapcnt repetitions of 762708Swollman** one (char [4]) coded leap second transition times 772708Swollman** one (char [4]) total correction after above 782708Swollman** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition 792708Swollman** time is standard time, if FALSE, 802708Swollman** transition time is wall clock time 812708Swollman** if absent, transition times are 822708Swollman** assumed to be wall clock time 839936Swollman** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition 8442989Swollman** time is UTC, if FALSE, 859936Swollman** transition time is local time 869936Swollman** if absent, transition times are 879936Swollman** assumed to be local time 882708Swollman*/ 892708Swollman 902708Swollman/* 912708Swollman** In the current implementation, "tzset()" refuses to deal with files that 922708Swollman** exceed any of the limits below. 932708Swollman*/ 942708Swollman 952708Swollman#ifndef TZ_MAX_TIMES 962708Swollman/* 972708Swollman** The TZ_MAX_TIMES value below is enough to handle a bit more than a 982708Swollman** year's worth of solar time (corrected daily to the nearest second) or 992708Swollman** 138 years of Pacific Presidential Election time 1002708Swollman** (where there are three time zone transitions every fourth year). 1012708Swollman*/ 1022708Swollman#define TZ_MAX_TIMES 370 1032708Swollman#endif /* !defined TZ_MAX_TIMES */ 1042708Swollman 1052708Swollman#ifndef TZ_MAX_TYPES 1062708Swollman#ifndef NOSOLAR 1072708Swollman#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ 1082708Swollman#endif /* !defined NOSOLAR */ 1092708Swollman#ifdef NOSOLAR 1109936Swollman/* 1119936Swollman** Must be at least 14 for Europe/Riga as of Jan 12 1995, 1129936Swollman** as noted by Earl Chew <earl@hpato.aus.hp.com>. 1139936Swollman*/ 1149936Swollman#define TZ_MAX_TYPES 20 /* Maximum number of local time types */ 1152708Swollman#endif /* !defined NOSOLAR */ 1162708Swollman#endif /* !defined TZ_MAX_TYPES */ 1172708Swollman 1182708Swollman#ifndef TZ_MAX_CHARS 1192708Swollman#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ 1202708Swollman /* (limited by what unsigned chars can hold) */ 1212708Swollman#endif /* !defined TZ_MAX_CHARS */ 1222708Swollman 1232708Swollman#ifndef TZ_MAX_LEAPS 1242708Swollman#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ 1252708Swollman#endif /* !defined TZ_MAX_LEAPS */ 1262708Swollman 1272708Swollman#define SECSPERMIN 60 1282708Swollman#define MINSPERHOUR 60 1292708Swollman#define HOURSPERDAY 24 1302708Swollman#define DAYSPERWEEK 7 1312708Swollman#define DAYSPERNYEAR 365 1322708Swollman#define DAYSPERLYEAR 366 1332708Swollman#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) 1342708Swollman#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) 1352708Swollman#define MONSPERYEAR 12 1362708Swollman 1372708Swollman#define TM_SUNDAY 0 1382708Swollman#define TM_MONDAY 1 1392708Swollman#define TM_TUESDAY 2 1402708Swollman#define TM_WEDNESDAY 3 1412708Swollman#define TM_THURSDAY 4 1422708Swollman#define TM_FRIDAY 5 1432708Swollman#define TM_SATURDAY 6 1442708Swollman 1452708Swollman#define TM_JANUARY 0 1462708Swollman#define TM_FEBRUARY 1 1472708Swollman#define TM_MARCH 2 1482708Swollman#define TM_APRIL 3 1492708Swollman#define TM_MAY 4 1502708Swollman#define TM_JUNE 5 1512708Swollman#define TM_JULY 6 1522708Swollman#define TM_AUGUST 7 1532708Swollman#define TM_SEPTEMBER 8 1542708Swollman#define TM_OCTOBER 9 1552708Swollman#define TM_NOVEMBER 10 1562708Swollman#define TM_DECEMBER 11 1572708Swollman 1582708Swollman#define TM_YEAR_BASE 1900 1592708Swollman 1602708Swollman#define EPOCH_YEAR 1970 1612708Swollman#define EPOCH_WDAY TM_THURSDAY 1622708Swollman 1632708Swollman/* 1642708Swollman** Accurate only for the past couple of centuries; 1652708Swollman** that will probably do. 1662708Swollman*/ 1672708Swollman 16817209Swollman#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) 1692708Swollman 1702708Swollman#ifndef USG 1712708Swollman 1722708Swollman/* 1732708Swollman** Use of the underscored variants may cause problems if you move your code to 1742708Swollman** certain System-V-based systems; for maximum portability, use the 1752708Swollman** underscore-free variants. The underscored variants are provided for 1762708Swollman** backward compatibility only; they may disappear from future versions of 1772708Swollman** this file. 1782708Swollman*/ 1792708Swollman 1802708Swollman#define SECS_PER_MIN SECSPERMIN 1812708Swollman#define MINS_PER_HOUR MINSPERHOUR 1822708Swollman#define HOURS_PER_DAY HOURSPERDAY 1832708Swollman#define DAYS_PER_WEEK DAYSPERWEEK 1842708Swollman#define DAYS_PER_NYEAR DAYSPERNYEAR 1852708Swollman#define DAYS_PER_LYEAR DAYSPERLYEAR 1862708Swollman#define SECS_PER_HOUR SECSPERHOUR 1872708Swollman#define SECS_PER_DAY SECSPERDAY 1882708Swollman#define MONS_PER_YEAR MONSPERYEAR 1892708Swollman 1902708Swollman#endif /* !defined USG */ 1912708Swollman 1922708Swollman#endif /* !defined TZFILE_H */ 193