diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-07-19 15:59:36 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-07-19 15:59:36 -0400 |
commit | 19d477aa681b4927f95824d724a4197c696f8c75 (patch) | |
tree | 4795da77200eb86060bef5e637190e03de6081a4 /src/timezone/pgtz.h | |
parent | bdeed0944fadff3ea394d361d0137997fb4db953 (diff) | |
download | postgresql-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.h | 22 |
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 */ |