home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Headers / bsd / tzfile.h < prev    next >
Text File  |  1992-01-08  |  3KB  |  99 lines

  1. /*
  2.  *    @(#)tzfile.h    5.2 tzfile.h 3/4/87
  3.  */
  4.  
  5. /*
  6. ** Information about time zone files.
  7. */
  8.  
  9. #define    TZDIR        "/etc/zoneinfo"    /* Time zone object file directory */
  10. #define    TZDEFAULT    "localtime"
  11.  
  12. /*
  13. ** Each file begins with. . .
  14. */
  15.  
  16. struct tzhead {
  17.     char    tzh_reserved[32];    /* reserved for future use */
  18.     char    tzh_timecnt[4];        /* coded number of transition times */
  19.     char    tzh_typecnt[4];        /* coded number of local time types */
  20.     char    tzh_charcnt[4];        /* coded number of abbr. chars */
  21. };
  22.  
  23. /*
  24. ** . . .followed by. . .7'**    tzh_timecnt (char [4])s        coded transition times a la time(2)
  25. **    tzh_timecnt (unsigned char)s    types of local time starting at above
  26. **    tzh_typecnt repetitions of
  27. **        one (char [4])        coded GMT offset in seconds
  28. **        one (unsigned char)    used to set tm_isdt
  29. **        one (unsigned char)    that's an abbreviation list index
  30. **    tzh_charcnt (char)s        '\0'-terminated zone abbreviaton strings
  31. */
  32.  
  33. /*
  34. ** In the current implementation, "tzset()" refuses to deal with files that
  35. ** exceed any of the limits below.
  36. */
  37.  
  38. /*
  39. ** The TZ_MAX_TIMES value below is enough to handle a bit more than a
  40. ** year's worth of solar time (corrected daily to the nearest second) or
  41. ** 138 years of Pacific Presidential Election time
  42. ** (where there are three time zone transitions every fourth year).
  43. */
  44. #define    TZ_MAX_TIMES    370
  45.  
  46. #define    NOSOLAR            /* We currently don't handle solar time */
  47.  
  48. #ifndef    NOSOLAR
  49. #define    TZ_MAX_TYPES    256    /* Limited by what (unsigned char)'s can hold */
  50. #else /* !NOSOLAR */
  51. #define    TZ_MAX_TYPES    10    /* Maximum number of local time types */
  52. #endif /* !NOSOLAR */
  53.  
  54. #define    TZ_MAX_CHARS    50    /* Maximum number of abbreviation characters */
  55.  
  56. #define    SECS_PER_MIN    60
  57. #define    MINS_PER_HOUR    60
  58. #define    HOURS_PER_DAY    24
  59. #define    DAYS_PER_WEEK    7
  60. #define    DAYS_PER_NYEAR    365
  61. #define    DAYS_PER_LYEAR    366
  62. #define    SECS_PER_HOUR    (SECS_PER_MIN * MINS_PER_HOUR)
  63. #define    SECS_PER_DAY    ((long) SECS_PER_HOUR * HOURS_PER_DAY)
  64. #define    MONS_PER_YEAR    12
  65.  
  66. #define    TM_SUNDAY    0
  67. #define    TM_MONDAY    1
  68. #define    TM_TUESDAY    2
  69. #define    TM_WEDNESDAY    3
  70. #define    TM_THURSDAY    4
  71. #define    TM_FRIDAY    5
  72. #define    TM_SATURDAY    6
  73.  
  74. #define    TM_JANUARY    0
  75. #define    TM_FEBRUARY    1
  76. #define    TM_MARCH    2
  77. #define    TM_APRIL    3
  78. #define    TM_MAY        4
  79. #define    TM_JUNE        5
  80. #define    TM_JULY        6
  81. #define    TM_AUGUST    7
  82. #define    TM_SEPTEMBER    8
  83. #define    TM_OCTOBER    9
  84. #define    TM_NOVEMBER    10
  85. #define    TM_DECEMBER    11
  86. #define    TM_SUNDAY    0
  87.  
  88. #define    TM_YEAR_BASE    1900
  89.  
  90. #define    EPOCH_YEAR    1970
  91. #define    EPOCH_WDAY    TM_THURSDAY
  92.  
  93. /*
  94. ** Accurate only for the past couple of centuries;
  95. ** that will probably do.
  96. */
  97.  
  98. #define    isleap(y) (((((y) % 4) == 0 && (((y) % 100) != 0)) || ((y) % 400) == 0))
  99.