aboutsummaryrefslogtreecommitdiff
path: root/src/timezone/pgtz.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-07-19 15:59:36 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-07-19 15:59:36 -0400
commit19d477aa681b4927f95824d724a4197c696f8c75 (patch)
tree4795da77200eb86060bef5e637190e03de6081a4 /src/timezone/pgtz.h
parentbdeed0944fadff3ea394d361d0137997fb4db953 (diff)
downloadpostgresql-19d477aa681b4927f95824d724a4197c696f8c75.tar.gz
postgresql-19d477aa681b4927f95824d724a4197c696f8c75.zip
Sync back-branch copies of the timezone code with IANA release tzcode2016c.
Back-patch commit 1c1a7cbd6a1600c9, along with subsequent portability fixes, into all active branches. Also, back-patch commits 696027727 and 596857043 (addition of zic -P option) into 9.1 and 9.2, just to reduce differences between the branches. src/timezone/ is now largely identical in all active branches, except that in 9.1, pgtz.c retains the initial-timezone-selection code that was moved over to initdb in 9.2. Ordinarily we wouldn't risk this much code churn in back branches, but it seems necessary in this case, because among the changes are two feature additions in the "zic" zone data file compiler (a larger limit on the number of allowed DST transitions, and addition of a "%z" escape in zone abbreviations). IANA have not yet started to use those features in their tzdata files, but presumably they will before too long. If we don't update then we'll be unable to adopt new timezone data. Also, installations built with --with-system-tzdata (which includes most distro-supplied builds, I believe) might fail even if we don't update our copies of the data files. There are assorted bug fixes too, mostly affecting obscure timezones or post-2037 dates. Discussion: <13601.1468868947@sss.pgh.pa.us>
Diffstat (limited to 'src/timezone/pgtz.h')
-rw-r--r--src/timezone/pgtz.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/timezone/pgtz.h b/src/timezone/pgtz.h
index 5d6084327c8..5348bafe707 100644
--- a/src/timezone/pgtz.h
+++ b/src/timezone/pgtz.h
@@ -16,25 +16,26 @@
#ifndef _PGTZ_H
#define _PGTZ_H
-#include "tzfile.h"
#include "pgtime.h"
+#include "tzfile.h"
+#define SMALLEST(a, b) (((a) < (b)) ? (a) : (b))
#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b))
struct ttinfo
{ /* time type information */
- long tt_gmtoff; /* UTC offset in seconds */
- int tt_isdst; /* used to set tm_isdst */
+ int32 tt_gmtoff; /* UT offset in seconds */
+ bool tt_isdst; /* used to set tm_isdst */
int tt_abbrind; /* abbreviation list index */
- int tt_ttisstd; /* TRUE if transition is std time */
- int tt_ttisgmt; /* TRUE if transition is UTC */
+ bool tt_ttisstd; /* transition is std time */
+ bool tt_ttisgmt; /* transition is UT */
};
struct lsinfo
{ /* leap second information */
pg_time_t ls_trans; /* transition time */
- long ls_corr; /* correction to apply */
+ int64 ls_corr; /* correction to apply */
};
struct state
@@ -43,14 +44,15 @@ struct state
int timecnt;
int typecnt;
int charcnt;
- int goback;
- int goahead;
+ bool goback;
+ bool goahead;
pg_time_t ats[TZ_MAX_TIMES];
unsigned char types[TZ_MAX_TIMES];
struct ttinfo ttis[TZ_MAX_TYPES];
char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, 3 /* sizeof gmt */ ),
(2 * (TZ_STRLEN_MAX + 1)))];
struct lsinfo lsis[TZ_MAX_LEAPS];
+ int defaulttype; /* for early times or if no transitions */
};
@@ -67,7 +69,7 @@ extern int pg_open_tzfile(const char *name, char *canonname);
/* in localtime.c */
extern int tzload(const char *name, char *canonname, struct state * sp,
- int doextend);
-extern int tzparse(const char *name, struct state * sp, int lastditch);
+ bool doextend);
+extern bool tzparse(const char *name, struct state * sp, bool lastditch);
#endif /* _PGTZ_H */