home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / tzfile.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  5.9 KB  |  173 lines

  1. /*
  2.  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  * 
  6.  * The contents of this file constitute Original Code as defined in and
  7.  * are subject to the Apple Public Source License Version 1.1 (the
  8.  * "License").  You may not use this file except in compliance with the
  9.  * License.  Please obtain a copy of the License at
  10.  * http://www.apple.com/publicsource and read it before using this file.
  11.  * 
  12.  * This Original Code and all software distributed under the License are
  13.  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17.  * License for the specific language governing rights and limitations
  18.  * under the License.
  19.  * 
  20.  * @APPLE_LICENSE_HEADER_END@
  21.  */
  22. /*
  23.  * Copyright (c) 1988, 1993
  24.  *    The Regents of the University of California.  All rights reserved.
  25.  *
  26.  * This code is derived from software contributed to Berkeley by
  27.  * Arthur David Olson of the National Cancer Institute.
  28.  *
  29.  * Redistribution and use in source and binary forms, with or without
  30.  * modification, are permitted provided that the following conditions
  31.  * are met:
  32.  * 1. Redistributions of source code must retain the above copyright
  33.  *    notice, this list of conditions and the following disclaimer.
  34.  * 2. Redistributions in binary form must reproduce the above copyright
  35.  *    notice, this list of conditions and the following disclaimer in the
  36.  *    documentation and/or other materials provided with the distribution.
  37.  * 3. All advertising materials mentioning features or use of this software
  38.  *    must display the following acknowledgement:
  39.  *    This product includes software developed by the University of
  40.  *    California, Berkeley and its contributors.
  41.  * 4. Neither the name of the University nor the names of its contributors
  42.  *    may be used to endorse or promote products derived from this software
  43.  *    without specific prior written permission.
  44.  *
  45.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  46.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  47.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  48.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  49.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  50.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  51.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  52.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  53.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  54.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  55.  * SUCH DAMAGE.
  56.  *
  57.  *    @(#)tzfile.h    8.1 (Berkeley) 6/2/93
  58.  */
  59.  
  60. #ifndef _TZFILE_H_
  61. #define    _TZFILE_H_
  62.  
  63. /*
  64.  * Information about time zone files.
  65.  */
  66.             /* Time zone object file directory */
  67. #define TZDIR        "/usr/share/zoneinfo"
  68. #define TZDEFAULT    "/etc/localtime"
  69. #define TZDEFRULES    "posixrules"
  70.  
  71. /*
  72. ** Each file begins with. . .
  73. */
  74.  
  75. struct tzhead {
  76.     char    tzh_reserved[24];    /* reserved for future use */
  77.     char    tzh_ttisstdcnt[4];    /* coded number of trans. time flags */
  78.     char    tzh_leapcnt[4];        /* coded number of leap seconds */
  79.     char    tzh_timecnt[4];        /* coded number of transition times */
  80.     char    tzh_typecnt[4];        /* coded number of local time types */
  81.     char    tzh_charcnt[4];        /* coded number of abbr. chars */
  82. };
  83.  
  84. /*
  85. ** . . .followed by. . .
  86. **
  87. **    tzh_timecnt (char [4])s        coded transition times a la time(2)
  88. **    tzh_timecnt (unsigned char)s    types of local time starting at above
  89. **    tzh_typecnt repetitions of
  90. **        one (char [4])        coded GMT offset in seconds
  91. **        one (unsigned char)    used to set tm_isdst
  92. **        one (unsigned char)    that's an abbreviation list index
  93. **    tzh_charcnt (char)s        '\0'-terminated zone abbreviations
  94. **    tzh_leapcnt repetitions of
  95. **        one (char [4])        coded leap second transition times
  96. **        one (char [4])        total correction after above
  97. **    tzh_ttisstdcnt (char)s        indexed by type; if TRUE, transition
  98. **                    time is standard time, if FALSE,
  99. **                    transition time is wall clock time
  100. **                    if absent, transition times are
  101. **                    assumed to be wall clock time
  102. */
  103.  
  104. /*
  105. ** In the current implementation, "tzset()" refuses to deal with files that
  106. ** exceed any of the limits below.
  107. */
  108.  
  109. /*
  110. ** The TZ_MAX_TIMES value below is enough to handle a bit more than a
  111. ** year's worth of solar time (corrected daily to the nearest second) or
  112. ** 138 years of Pacific Presidential Election time
  113. ** (where there are three time zone transitions every fourth year).
  114. */
  115. #define TZ_MAX_TIMES    370
  116.  
  117. #define NOSOLAR            /* 4BSD doesn't currently handle solar time */
  118.  
  119. #ifndef NOSOLAR
  120. #define TZ_MAX_TYPES    256    /* Limited by what (unsigned char)'s can hold */
  121. #else
  122. #define TZ_MAX_TYPES    20    /* Maximum number of local time types */
  123. #endif
  124.  
  125. #define TZ_MAX_CHARS    50    /* Maximum number of abbreviation characters */
  126.  
  127. #define    TZ_MAX_LEAPS    50    /* Maximum number of leap second corrections */
  128.  
  129. #define SECSPERMIN    60
  130. #define MINSPERHOUR    60
  131. #define HOURSPERDAY    24
  132. #define DAYSPERWEEK    7
  133. #define DAYSPERNYEAR    365
  134. #define DAYSPERLYEAR    366
  135. #define SECSPERHOUR    (SECSPERMIN * MINSPERHOUR)
  136. #define SECSPERDAY    ((long) SECSPERHOUR * HOURSPERDAY)
  137. #define MONSPERYEAR    12
  138.  
  139. #define TM_SUNDAY    0
  140. #define TM_MONDAY    1
  141. #define TM_TUESDAY    2
  142. #define TM_WEDNESDAY    3
  143. #define TM_THURSDAY    4
  144. #define TM_FRIDAY    5
  145. #define TM_SATURDAY    6
  146.  
  147. #define TM_JANUARY    0
  148. #define TM_FEBRUARY    1
  149. #define TM_MARCH    2
  150. #define TM_APRIL    3
  151. #define TM_MAY        4
  152. #define TM_JUNE        5
  153. #define TM_JULY        6
  154. #define TM_AUGUST    7
  155. #define TM_SEPTEMBER    8
  156. #define TM_OCTOBER    9
  157. #define TM_NOVEMBER    10
  158. #define TM_DECEMBER    11
  159.  
  160. #define TM_YEAR_BASE    1900
  161.  
  162. #define EPOCH_YEAR    1970
  163. #define EPOCH_WDAY    TM_THURSDAY
  164.  
  165. /*
  166. ** Accurate only for the past couple of centuries;
  167. ** that will probably do.
  168. */
  169.  
  170. #define isleap(y) (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0)
  171.  
  172. #endif /* !_TZFILE_H_ */
  173.