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.

150 lines
4.9 KiB

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