home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / riscbsd / sources / src_tgz / src_tgz~ / src / include / tzfile.h < prev    next >
C/C++ Source or Header  |  1995-10-13  |  5KB  |  154 lines

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