summaryrefslogtreecommitdiff
path: root/timezone.h
diff options
context:
space:
mode:
Diffstat (limited to 'timezone.h')
-rw-r--r--timezone.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/timezone.h b/timezone.h
new file mode 100644
index 0000000..f4f46f2
--- /dev/null
+++ b/timezone.h
@@ -0,0 +1,83 @@
+/*
+ timezone.h - Zip 3
+
+ Copyright (c) 1990-2004 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 2003-May-08 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, all these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
+*/
+#ifndef __timezone_h
+#define __timezone_h
+
+#ifndef IZ_MKTIME_ONLY
+
+/* limits for our timezone info data:
+ * we support only basic standard and daylight time, with max 2 transitions
+ * per year, but for the maximum range of years a 32-bit second counter
+ * can cover (these are 136 years plus a bit more than one month)
+ */
+#define TZ_MAX_TIMES 272 /* (=2*(LastGoodYr + 1 - FirstGoodYr) */
+#define TZ_MAX_TYPES 2 /* We only support basic standard and daylight */
+#ifdef WIN32 /* Win32 tzinfo supplies at max (2 * 32) chars of tz names */
+#define TZ_MAX_CHARS 64 /* Maximum number of abbreviation characters */
+#else
+#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */
+#endif
+
+/* supported types of transition rules */
+#define JULIAN_DAY 0 /* Jn - Julian day */
+#define DAY_OF_YEAR 1 /* n - day of year */
+#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */
+
+
+struct ttinfo {
+ long tt_gmtoff; /* UTC offset in seconds */
+ int tt_isdst; /* used to set tm_isdst */
+ int tt_abbrind; /* abbreviation list index */
+};
+
+struct state {
+ int timecnt;
+ int typecnt;
+ int charcnt;
+ time_t ats[TZ_MAX_TIMES];
+ unsigned char types[TZ_MAX_TIMES];
+ struct ttinfo ttis[TZ_MAX_TYPES];
+ char chars[TZ_MAX_CHARS];
+};
+
+struct rule {
+ int r_type; /* type of rule--JULIAN_DAY etc */
+ int r_day; /* day number of rule */
+ int r_week; /* week number of rule */
+ int r_mon; /* month number of rule */
+ long r_time; /* transition time of rule */
+};
+
+extern int real_timezone_is_set; /* set by tzset() */
+
+
+/* prototypes of functions not in time.h */
+
+void __tzset OF((void));
+
+#ifdef NEED__ISINDST
+int _isindst OF((struct tm *tb));
+#endif
+
+/* callback function to be supplied by the program that uses this library */
+int GetPlatformLocalTimezone OF((register struct state * ZCONST sp,
+ void (*fill_tzstate_from_rules)(struct state * ZCONST sp_res,
+ ZCONST struct rule * ZCONST start,
+ ZCONST struct rule * ZCONST end)));
+#ifdef IZTZ_SETLOCALTZINFO
+void set_TZ OF((long time_zone, int day_light));
+#endif
+
+#endif /* !IZ_MKTIME_ONLY */
+
+time_t mkgmtime OF((struct tm *tm));
+
+#endif