1da6c28aaSamw /* 2da6c28aaSamw * CDDL HEADER START 3da6c28aaSamw * 4da6c28aaSamw * The contents of this file are subject to the terms of the 5da6c28aaSamw * Common Development and Distribution License (the "License"). 6da6c28aaSamw * You may not use this file except in compliance with the License. 7da6c28aaSamw * 8da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9da6c28aaSamw * or http://www.opensolaris.org/os/licensing. 10da6c28aaSamw * See the License for the specific language governing permissions 11da6c28aaSamw * and limitations under the License. 12da6c28aaSamw * 13da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each 14da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the 16da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying 17da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner] 18da6c28aaSamw * 19da6c28aaSamw * CDDL HEADER END 20da6c28aaSamw */ 21da6c28aaSamw /* 22da6c28aaSamw * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23da6c28aaSamw * Use is subject to license terms. 24da6c28aaSamw */ 25da6c28aaSamw 26da6c28aaSamw /* 27da6c28aaSamw * from Arthur Olson's 6.1 28da6c28aaSamw */ 29da6c28aaSamw 30da6c28aaSamw #ifndef _SYS_TZFILE_H 31da6c28aaSamw #define _SYS_TZFILE_H 32da6c28aaSamw 33da6c28aaSamw #ifdef __cplusplus 34da6c28aaSamw extern "C" { 35da6c28aaSamw #endif 36da6c28aaSamw 37da6c28aaSamw /* 38da6c28aaSamw * Information about time zone files. 39da6c28aaSamw */ 40da6c28aaSamw 41da6c28aaSamw #define TZDIR "/usr/share/lib/zoneinfo" /* Time zone object file directory */ 42da6c28aaSamw 43da6c28aaSamw #define TZDEFAULT (getenv("TZ")) 44da6c28aaSamw 45da6c28aaSamw #define TZDEFRULES "posixrules" 46da6c28aaSamw 47da6c28aaSamw /* 48da6c28aaSamw * Each file begins with. . . 49da6c28aaSamw */ 50da6c28aaSamw 51da6c28aaSamw struct tzhead { 52da6c28aaSamw char tzh_reserved[24]; /* reserved for future use */ 53da6c28aaSamw char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ 54da6c28aaSamw char tzh_leapcnt[4]; /* coded number of leap seconds */ 55da6c28aaSamw char tzh_timecnt[4]; /* coded number of transition times */ 56da6c28aaSamw char tzh_typecnt[4]; /* coded number of local time types */ 57da6c28aaSamw char tzh_charcnt[4]; /* coded number of abbr. chars */ 58da6c28aaSamw }; 59da6c28aaSamw 60da6c28aaSamw /* 61da6c28aaSamw * . . .followed by. . . 62da6c28aaSamw * 63da6c28aaSamw * tzh_timecnt (char [4])s coded transition times a la time(2) 64da6c28aaSamw * tzh_timecnt (unsigned char)s types of local time starting at above 65da6c28aaSamw * tzh_typecnt repetitions of 66da6c28aaSamw * one (char [4]) coded GMT offset in seconds 67da6c28aaSamw * one (unsigned char) used to set tm_isdst 68da6c28aaSamw * one (unsigned char) that's an abbreviation list index 69da6c28aaSamw * tzh_charcnt (char)s '\0'-terminated zone abbreviations 70da6c28aaSamw * tzh_leapcnt repetitions of 71da6c28aaSamw * one (char [4]) coded leap second transition times 72da6c28aaSamw * one (char [4]) total correction after above 73da6c28aaSamw * tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition 74da6c28aaSamw * time is standard time, if FALSE, 75da6c28aaSamw * transition time is wall clock time 76da6c28aaSamw * if absent, transition times are 77da6c28aaSamw * assumed to be wall clock time 78da6c28aaSamw */ 79da6c28aaSamw 80da6c28aaSamw /* 81da6c28aaSamw * In the current implementation, "tzset()" refuses to deal with files that 82da6c28aaSamw * exceed any of the limits below. 83da6c28aaSamw */ 84da6c28aaSamw 85da6c28aaSamw /* 86da6c28aaSamw * The TZ_MAX_TIMES value below is enough to handle a bit more than a 87da6c28aaSamw * year's worth of solar time (corrected daily to the nearest second) or 88da6c28aaSamw * 138 years of Pacific Presidential Election time 89da6c28aaSamw * (where there are three time zone transitions every fourth year). 90da6c28aaSamw */ 91da6c28aaSamw #define TZ_MAX_TIMES 370 92da6c28aaSamw 93da6c28aaSamw #define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ 94da6c28aaSamw 95da6c28aaSamw #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ 96da6c28aaSamw 97da6c28aaSamw #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ 98da6c28aaSamw 99da6c28aaSamw #define SECSPERMIN 60 100da6c28aaSamw #define MINSPERHOUR 60 101da6c28aaSamw #define HOURSPERDAY 24 102da6c28aaSamw #define DAYSPERWEEK 7 103da6c28aaSamw #define DAYSPERNYEAR 365 104da6c28aaSamw #define DAYSPERLYEAR 366 105da6c28aaSamw #define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) 106da6c28aaSamw #define SECSPERDAY ((long)SECSPERHOUR * HOURSPERDAY) 107da6c28aaSamw #define MONSPERYEAR 12 108da6c28aaSamw 109da6c28aaSamw #define TM_SUNDAY 0 110da6c28aaSamw #define TM_MONDAY 1 111da6c28aaSamw #define TM_TUESDAY 2 112da6c28aaSamw #define TM_WEDNESDAY 3 113da6c28aaSamw #define TM_THURSDAY 4 114da6c28aaSamw #define TM_FRIDAY 5 115da6c28aaSamw #define TM_SATURDAY 6 116da6c28aaSamw 117da6c28aaSamw #define TM_JANUARY 0 118da6c28aaSamw #define TM_FEBRUARY 1 119da6c28aaSamw #define TM_MARCH 2 120da6c28aaSamw #define TM_APRIL 3 121da6c28aaSamw #define TM_MAY 4 122da6c28aaSamw #define TM_JUNE 5 123da6c28aaSamw #define TM_JULY 6 124da6c28aaSamw #define TM_AUGUST 7 125da6c28aaSamw #define TM_SEPTEMBER 8 126da6c28aaSamw #define TM_OCTOBER 9 127da6c28aaSamw #define TM_NOVEMBER 10 128da6c28aaSamw #define TM_DECEMBER 11 129da6c28aaSamw 130da6c28aaSamw #define TM_YEAR_BASE 1900 131da6c28aaSamw 132da6c28aaSamw #define EPOCH_YEAR 1970 133da6c28aaSamw #define EPOCH_WDAY TM_THURSDAY 134da6c28aaSamw 135da6c28aaSamw /* 136da6c28aaSamw * Accurate only for the past couple of centuries; 137da6c28aaSamw * that will probably do. 138da6c28aaSamw */ 139da6c28aaSamw 140*54026d5aSGordon Ross #define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0) 141da6c28aaSamw 142da6c28aaSamw /* 143da6c28aaSamw * Use of the underscored variants may cause problems if you move your code to 144da6c28aaSamw * certain System-V-based systems; for maximum portability, use the 145da6c28aaSamw * underscore-free variants. The underscored variants are provided for 146da6c28aaSamw * backward compatibility only; they may disappear from future versions of 147da6c28aaSamw * this file. 148da6c28aaSamw */ 149da6c28aaSamw 150da6c28aaSamw #define SECS_PER_MIN SECSPERMIN 151da6c28aaSamw #define MINS_PER_HOUR MINSPERHOUR 152da6c28aaSamw #define HOURS_PER_DAY HOURSPERDAY 153da6c28aaSamw #define DAYS_PER_WEEK DAYSPERWEEK 154da6c28aaSamw #define DAYS_PER_NYEAR DAYSPERNYEAR 155da6c28aaSamw #define DAYS_PER_LYEAR DAYSPERLYEAR 156da6c28aaSamw #define SECS_PER_HOUR SECSPERHOUR 157da6c28aaSamw #define SECS_PER_DAY SECSPERDAY 158da6c28aaSamw #define MONS_PER_YEAR MONSPERYEAR 159da6c28aaSamw 160da6c28aaSamw #ifdef __cplusplus 161da6c28aaSamw } 162da6c28aaSamw #endif 163da6c28aaSamw 164da6c28aaSamw #endif /* _SYS_TZFILE_H */ 165