Source code pulled from OpenBSD for OpenNTPD. The place to contribute to this code is via the OpenBSD CVS tree.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
5.1 KiB

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