"Fossies" - the Fresh Open Source Software Archive

Member "tzfile.h" (16 Jul 2018, 3840 Bytes) of package /linux/misc/tzcode2018i.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "tzfile.h" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 2018e_vs_2018f.

    1 /* Layout and location of TZif files.  */
    2 
    3 #ifndef TZFILE_H
    4 
    5 #define TZFILE_H
    6 
    7 /*
    8 ** This file is in the public domain, so clarified as of
    9 ** 1996-06-05 by Arthur David Olson.
   10 */
   11 
   12 /*
   13 ** This header is for use ONLY with the time conversion code.
   14 ** There is no guarantee that it will remain unchanged,
   15 ** or that it will remain at all.
   16 ** Do NOT copy it to any system include directory.
   17 ** Thank you!
   18 */
   19 
   20 /*
   21 ** Information about time zone files.
   22 */
   23 
   24 #ifndef TZDIR
   25 #define TZDIR   "/usr/share/zoneinfo" /* Time zone object file directory */
   26 #endif /* !defined TZDIR */
   27 
   28 #ifndef TZDEFAULT
   29 #define TZDEFAULT   "/etc/localtime"
   30 #endif /* !defined TZDEFAULT */
   31 
   32 #ifndef TZDEFRULES
   33 #define TZDEFRULES  "posixrules"
   34 #endif /* !defined TZDEFRULES */
   35 
   36 /*
   37 ** Each file begins with. . .
   38 */
   39 
   40 #define TZ_MAGIC    "TZif"
   41 
   42 struct tzhead {
   43     char    tzh_magic[4];       /* TZ_MAGIC */
   44     char    tzh_version[1];     /* '\0' or '2' or '3' as of 2013 */
   45     char    tzh_reserved[15];   /* reserved; must be zero */
   46     char    tzh_ttisgmtcnt[4];  /* coded number of trans. time flags */
   47     char    tzh_ttisstdcnt[4];  /* coded number of trans. time flags */
   48     char    tzh_leapcnt[4];     /* coded number of leap seconds */
   49     char    tzh_timecnt[4];     /* coded number of transition times */
   50     char    tzh_typecnt[4];     /* coded number of local time types */
   51     char    tzh_charcnt[4];     /* coded number of abbr. chars */
   52 };
   53 
   54 /*
   55 ** . . .followed by. . .
   56 **
   57 **  tzh_timecnt (char [4])s     coded transition times a la time(2)
   58 **  tzh_timecnt (unsigned char)s    types of local time starting at above
   59 **  tzh_typecnt repetitions of
   60 **      one (char [4])      coded UT offset in seconds
   61 **      one (unsigned char) used to set tm_isdst
   62 **      one (unsigned char) that's an abbreviation list index
   63 **  tzh_charcnt (char)s     '\0'-terminated zone abbreviations
   64 **  tzh_leapcnt repetitions of
   65 **      one (char [4])      coded leap second transition times
   66 **      one (char [4])      total correction after above
   67 **  tzh_ttisstdcnt (char)s      indexed by type; if 1, transition
   68 **                  time is standard time, if 0,
   69 **                  transition time is wall clock time
   70 **                  if absent, transition times are
   71 **                  assumed to be wall clock time
   72 **  tzh_ttisgmtcnt (char)s      indexed by type; if 1, transition
   73 **                  time is UT, if 0,
   74 **                  transition time is local time
   75 **                  if absent, transition times are
   76 **                  assumed to be local time
   77 */
   78 
   79 /*
   80 ** If tzh_version is '2' or greater, the above is followed by a second instance
   81 ** of tzhead and a second instance of the data in which each coded transition
   82 ** time uses 8 rather than 4 chars,
   83 ** then a POSIX-TZ-environment-variable-style string for use in handling
   84 ** instants after the last transition time stored in the file
   85 ** (with nothing between the newlines if there is no POSIX representation for
   86 ** such instants).
   87 **
   88 ** If tz_version is '3' or greater, the above is extended as follows.
   89 ** First, the POSIX TZ string's hour offset may range from -167
   90 ** through 167 as compared to the POSIX-required 0 through 24.
   91 ** Second, its DST start time may be January 1 at 00:00 and its stop
   92 ** time December 31 at 24:00 plus the difference between DST and
   93 ** standard time, indicating DST all year.
   94 */
   95 
   96 /*
   97 ** In the current implementation, "tzset()" refuses to deal with files that
   98 ** exceed any of the limits below.
   99 */
  100 
  101 #ifndef TZ_MAX_TIMES
  102 #define TZ_MAX_TIMES    2000
  103 #endif /* !defined TZ_MAX_TIMES */
  104 
  105 #ifndef TZ_MAX_TYPES
  106 /* This must be at least 17 for Europe/Samara and Europe/Vilnius.  */
  107 #define TZ_MAX_TYPES    256 /* Limited by what (unsigned char)'s can hold */
  108 #endif /* !defined TZ_MAX_TYPES */
  109 
  110 #ifndef TZ_MAX_CHARS
  111 #define TZ_MAX_CHARS    50  /* Maximum number of abbreviation characters */
  112                 /* (limited by what unsigned chars can hold) */
  113 #endif /* !defined TZ_MAX_CHARS */
  114 
  115 #ifndef TZ_MAX_LEAPS
  116 #define TZ_MAX_LEAPS    50  /* Maximum number of leap second corrections */
  117 #endif /* !defined TZ_MAX_LEAPS */
  118 
  119 #endif /* !defined TZFILE_H */