1 /* 2 Copyright (c) 1990-2001 Info-ZIP. All rights reserved. 3 4 See the accompanying file LICENSE, version 2000-Apr-09 or later 5 (the contents of which are also included in zip.h) for terms of use. 6 If, for some reason, all these files are missing, the Info-ZIP license 7 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 8 */ 9 #ifndef __timezone_h 10 #define __timezone_h 11 12 #ifndef IZ_MKTIME_ONLY 13 14 /* limits for our timezone info data: 15 * we support only basic standard and daylight time, with max 2 transitions 16 * per year, but for the maximum range of years a 32-bit second counter 17 * can cover (these are 136 years plus a bit more than one month) 18 */ 19 #define TZ_MAX_TIMES 272 /* (=2*(LastGoodYr + 1 - FirstGoodYr) */ 20 #define TZ_MAX_TYPES 2 /* We only support basic standard and daylight */ 21 #ifdef WIN32 /* Win32 tzinfo supplies at max (2 * 32) chars of tz names */ 22 #define TZ_MAX_CHARS 64 /* Maximum number of abbreviation characters */ 23 #else 24 #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ 25 #endif 26 27 /* supported types of transition rules */ 28 #define JULIAN_DAY 0 /* Jn - Julian day */ 29 #define DAY_OF_YEAR 1 /* n - day of year */ 30 #define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */ 31 32 33 struct ttinfo { 34 long tt_gmtoff; /* UTC offset in seconds */ 35 int tt_isdst; /* used to set tm_isdst */ 36 int tt_abbrind; /* abbreviation list index */ 37 }; 38 39 struct state { 40 int timecnt; 41 int typecnt; 42 int charcnt; 43 time_t ats[TZ_MAX_TIMES]; 44 unsigned char types[TZ_MAX_TIMES]; 45 struct ttinfo ttis[TZ_MAX_TYPES]; 46 char chars[TZ_MAX_CHARS]; 47 }; 48 49 struct rule { 50 int r_type; /* type of rule--JULIAN_DAY etc */ 51 int r_day; /* day number of rule */ 52 int r_week; /* week number of rule */ 53 int r_mon; /* month number of rule */ 54 long r_time; /* transition time of rule */ 55 }; 56 57 extern int real_timezone_is_set; /* set by tzset() */ 58 59 60 /* prototypes of functions not in time.h */ 61 62 void __tzset OF((void)); 63 64 #ifdef NEED__ISINDST 65 int _isindst OF((struct tm *tb)); 66 #endif 67 68 /* callback function to be supplied by the program that uses this library */ 69 int GetPlatformLocalTimezone OF((register struct state * ZCONST sp, 70 void (*fill_tzstate_from_rules)(struct state * ZCONST sp_res, 71 ZCONST struct rule * ZCONST start, 72 ZCONST struct rule * ZCONST end))); 73 #ifdef IZTZ_SETLOCALTZINFO 74 void set_TZ OF((long time_zone, int day_light)); 75 #endif 76 77 #endif /* !IZ_MKTIME_ONLY */ 78 79 time_t mkgmtime OF((struct tm *tm)); 80 81 #endif 82