genericopenlibs/openenvcore/libc/src/stdtime/tzfile.h
changeset 31 ce057bb09d0b
child 34 5fae379060a7
equal deleted inserted replaced
30:e20de85af2ee 31:ce057bb09d0b
       
     1 #ifndef TZFILE_H
       
     2 #define TZFILE_H/*
       
     3 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 * All rights reserved.
       
     5 * This component and the accompanying materials are made available
       
     6 * under the terms of "Eclipse Public License v1.0"
       
     7 * which accompanies this distribution, and is available
       
     8 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     9 *
       
    10 * Initial Contributors:
       
    11 * Nokia Corporation - initial contribution.
       
    12 *
       
    13 * Contributors:
       
    14 *
       
    15 * Description: 
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 /*
       
    21 ** This header is for use ONLY with the time conversion code.
       
    22 ** There is no guarantee that it will remain unchanged,
       
    23 ** or that it will remain at all.
       
    24 ** Do NOT copy it to any system include directory.
       
    25 ** Thank you!
       
    26 */
       
    27 
       
    28 /*
       
    29 ** ID
       
    30 */
       
    31 
       
    32 #ifndef lint
       
    33 #ifndef NOID
       
    34 /*
       
    35 static char	tzfilehid[] = "@(#)tzfile.h	7.14";
       
    36 */
       
    37 #endif /* !defined NOID */
       
    38 #endif /* !defined lint */
       
    39 
       
    40 /*
       
    41 ** Information about time zone files.
       
    42 */
       
    43 
       
    44 #ifndef TZDIR
       
    45 #define TZDIR	"/usr/share/zoneinfo" /* Time zone object file directory */
       
    46 #endif /* !defined TZDIR */
       
    47 
       
    48 #ifndef TZDEFAULT
       
    49 #define TZDEFAULT	"/etc/localtime"
       
    50 #endif /* !defined TZDEFAULT */
       
    51 
       
    52 #ifndef TZDEFRULES
       
    53 #define TZDEFRULES	"posixrules"
       
    54 #endif /* !defined TZDEFRULES */
       
    55 
       
    56 /*
       
    57 ** Each file begins with. . .
       
    58 */
       
    59 
       
    60 #define	TZ_MAGIC	"TZif"
       
    61 
       
    62 struct tzhead {
       
    63  	char	tzh_magic[4];		/* TZ_MAGIC */
       
    64 	char	tzh_reserved[16];	/* reserved for future use */
       
    65 	char	tzh_ttisgmtcnt[4];	/* coded number of trans. time flags */
       
    66 	char	tzh_ttisstdcnt[4];	/* coded number of trans. time flags */
       
    67 	char	tzh_leapcnt[4];		/* coded number of leap seconds */
       
    68 	char	tzh_timecnt[4];		/* coded number of transition times */
       
    69 	char	tzh_typecnt[4];		/* coded number of local time types */
       
    70 	char	tzh_charcnt[4];		/* coded number of abbr. chars */
       
    71 };
       
    72 
       
    73 /*
       
    74 ** . . .followed by. . .
       
    75 **
       
    76 **	tzh_timecnt (char [4])s		coded transition times a la time(2)
       
    77 **	tzh_timecnt (unsigned char)s	types of local time starting at above
       
    78 **	tzh_typecnt repetitions of
       
    79 **		one (char [4])		coded UTC offset in seconds
       
    80 **		one (unsigned char)	used to set tm_isdst
       
    81 **		one (unsigned char)	that's an abbreviation list index
       
    82 **	tzh_charcnt (char)s		'\0'-terminated zone abbreviations
       
    83 **	tzh_leapcnt repetitions of
       
    84 **		one (char [4])		coded leap second transition times
       
    85 **		one (char [4])		total correction after above
       
    86 **	tzh_ttisstdcnt (char)s		indexed by type; if TRUE, transition
       
    87 **					time is standard time, if FALSE,
       
    88 **					transition time is wall clock time
       
    89 **					if absent, transition times are
       
    90 **					assumed to be wall clock time
       
    91 **	tzh_ttisgmtcnt (char)s		indexed by type; if TRUE, transition
       
    92 **					time is UTC, if FALSE,
       
    93 **					transition time is local time
       
    94 **					if absent, transition times are
       
    95 **					assumed to be local time
       
    96 */
       
    97 
       
    98 /*
       
    99 ** In the current implementation, "tzset()" refuses to deal with files that
       
   100 ** exceed any of the limits below.
       
   101 */
       
   102 
       
   103 #ifndef TZ_MAX_TIMES
       
   104 /*
       
   105 ** The TZ_MAX_TIMES value below is enough to handle a bit more than a
       
   106 ** year's worth of solar time (corrected daily to the nearest second) or
       
   107 ** 138 years of Pacific Presidential Election time
       
   108 ** (where there are three time zone transitions every fourth year).
       
   109 */
       
   110 #define TZ_MAX_TIMES	370
       
   111 #endif /* !defined TZ_MAX_TIMES */
       
   112 
       
   113 #ifndef TZ_MAX_TYPES
       
   114 #ifndef NOSOLAR
       
   115 #define TZ_MAX_TYPES	256 /* Limited by what (unsigned char)'s can hold */
       
   116 #endif /* !defined NOSOLAR */
       
   117 #ifdef NOSOLAR
       
   118 /*
       
   119 ** Must be at least 14 for Europe/Riga as of Jan 12 1995,
       
   120 ** as noted by Earl Chew <earl@hpato.aus.hp.com>.
       
   121 */
       
   122 #define TZ_MAX_TYPES	20	/* Maximum number of local time types */
       
   123 #endif /* !defined NOSOLAR */
       
   124 #endif /* !defined TZ_MAX_TYPES */
       
   125 
       
   126 #ifndef TZ_MAX_CHARS
       
   127 #define TZ_MAX_CHARS	50	/* Maximum number of abbreviation characters */
       
   128 				/* (limited by what unsigned chars can hold) */
       
   129 #endif /* !defined TZ_MAX_CHARS */
       
   130 
       
   131 #ifndef TZ_MAX_LEAPS
       
   132 #define TZ_MAX_LEAPS	50	/* Maximum number of leap second corrections */
       
   133 #endif /* !defined TZ_MAX_LEAPS */
       
   134 
       
   135 #define SECSPERMIN	60
       
   136 #define MINSPERHOUR	60
       
   137 #define HOURSPERDAY	24
       
   138 #define DAYSPERWEEK	7
       
   139 #define DAYSPERNYEAR	365
       
   140 #define DAYSPERLYEAR	366
       
   141 #define SECSPERHOUR	(SECSPERMIN * MINSPERHOUR)
       
   142 #define SECSPERDAY	((long) SECSPERHOUR * HOURSPERDAY)
       
   143 #define MONSPERYEAR	12
       
   144 
       
   145 #define TM_SUNDAY	0
       
   146 #define TM_MONDAY	1
       
   147 #define TM_TUESDAY	2
       
   148 #define TM_WEDNESDAY	3
       
   149 #define TM_THURSDAY	4
       
   150 #define TM_FRIDAY	5
       
   151 #define TM_SATURDAY	6
       
   152 
       
   153 #define TM_JANUARY	0
       
   154 #define TM_FEBRUARY	1
       
   155 #define TM_MARCH	2
       
   156 #define TM_APRIL	3
       
   157 #define TM_MAY		4
       
   158 #define TM_JUNE		5
       
   159 #define TM_JULY		6
       
   160 #define TM_AUGUST	7
       
   161 #define TM_SEPTEMBER	8
       
   162 #define TM_OCTOBER	9
       
   163 #define TM_NOVEMBER	10
       
   164 #define TM_DECEMBER	11
       
   165 
       
   166 #define TM_YEAR_BASE	1900
       
   167 
       
   168 #define EPOCH_YEAR	1970
       
   169 #define EPOCH_WDAY	TM_THURSDAY
       
   170 
       
   171 /*
       
   172 ** Accurate only for the past couple of centuries;
       
   173 ** that will probably do.
       
   174 */
       
   175 
       
   176 #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
       
   177 
       
   178 #ifndef USG
       
   179 
       
   180 /*
       
   181 ** Use of the underscored variants may cause problems if you move your code to
       
   182 ** certain System-V-based systems; for maximum portability, use the
       
   183 ** underscore-free variants.  The underscored variants are provided for
       
   184 ** backward compatibility only; they may disappear from future versions of
       
   185 ** this file.
       
   186 */
       
   187 
       
   188 #define SECS_PER_MIN	SECSPERMIN
       
   189 #define MINS_PER_HOUR	MINSPERHOUR
       
   190 #define HOURS_PER_DAY	HOURSPERDAY
       
   191 #define DAYS_PER_WEEK	DAYSPERWEEK
       
   192 #define DAYS_PER_NYEAR	DAYSPERNYEAR
       
   193 #define DAYS_PER_LYEAR	DAYSPERLYEAR
       
   194 #define SECS_PER_HOUR	SECSPERHOUR
       
   195 #define SECS_PER_DAY	SECSPERDAY
       
   196 #define MONS_PER_YEAR	MONSPERYEAR
       
   197 
       
   198 #endif /* !defined USG */
       
   199 
       
   200 #endif /* !defined TZFILE_H */