diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-03-28 15:10:17 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-03-28 15:10:17 -0400 |
commit | 1c1a7cbd6a1600c97dfcd9b5dc78a23b5db9bbf6 (patch) | |
tree | 83a3722b946a8610306512bcfb2ccc77be745e84 /src/timezone/private.h | |
parent | e5a4dea80f2506a7a565508e48aaa52296ff410a (diff) | |
download | postgresql-1c1a7cbd6a1600c97dfcd9b5dc78a23b5db9bbf6.tar.gz postgresql-1c1a7cbd6a1600c97dfcd9b5dc78a23b5db9bbf6.zip |
Sync our copy of the timezone library with IANA release tzcode2016c.
We hadn't done this in about six years, which proves to have been a mistake
because there's been a lot of code churn upstream, making the merge rather
painful. But putting it off any further isn't going to lessen the pain,
and there are at least two incompatible changes that we need to absorb
before someone starts complaining that --with-system-tzdata doesn't work
at all on their platform, or we get blindsided by a tzdata release that
our out-of-date zic can't compile. Last week's "time zone abbreviation
differs from POSIX standard" mess was a wake-up call in that regard.
This is a sufficiently large patch that I'm afraid to back-patch it
immediately, though the foregoing considerations imply that we probably
should do so eventually. For the moment, just put it in HEAD so that
it can get some testing. Maybe we can wait till the end of the 9.6
beta cycle before deeming it okay.
Diffstat (limited to 'src/timezone/private.h')
-rw-r--r-- | src/timezone/private.h | 76 |
1 files changed, 39 insertions, 37 deletions
diff --git a/src/timezone/private.h b/src/timezone/private.h index b1ac9edfcf8..8480d389612 100644 --- a/src/timezone/private.h +++ b/src/timezone/private.h @@ -25,6 +25,18 @@ #define GRANDPARENTED "Local time zone must be set--see zic manual page" +/* + * IANA has a bunch of HAVE_FOO #defines here, but in PG we want pretty + * much all of that to be done by PG's configure script. + */ + +#ifndef ENOTSUP +#define ENOTSUP EINVAL +#endif +#ifndef EOVERFLOW +#define EOVERFLOW EINVAL +#endif + #ifndef WIFEXITED #define WIFEXITED(status) (((status) & 0xff) == 0) #endif /* !defined WIFEXITED */ @@ -35,6 +47,10 @@ /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ #define is_digit(c) ((unsigned)(c) - '0' <= 9) +#ifndef SIZE_MAX +#define SIZE_MAX ((size_t) -1) +#endif + /* * SunOS 4.1.1 libraries lack remove. */ @@ -45,31 +61,11 @@ extern int unlink(const char *filename); #define remove unlink #endif /* !defined remove */ -/* - * Private function declarations. - */ -extern char *icalloc(int nelem, int elsize); -extern char *icatalloc(char *old, const char *new); -extern char *icpyalloc(const char *string); -extern char *imalloc(int n); -extern void *irealloc(void *pointer, int size); -extern void icfree(char *pointer); -extern void ifree(char *pointer); -extern const char *scheck(const char *string, const char *format); - /* * Finally, some convenience items. */ -#ifndef TRUE -#define TRUE 1 -#endif /* !defined TRUE */ - -#ifndef FALSE -#define FALSE 0 -#endif /* !defined FALSE */ - #ifndef TYPE_BIT #define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) #endif /* !defined TYPE_BIT */ @@ -78,14 +74,18 @@ extern const char *scheck(const char *string, const char *format); #define TYPE_SIGNED(type) (((type) -1) < 0) #endif /* !defined TYPE_SIGNED */ +#define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0) + /* - * Since the definition of TYPE_INTEGRAL contains floating point numbers, - * it cannot be used in preprocessor directives. + * Max and min values of the integer type T, of which only the bottom + * B bits are used, and where the highest-order used bit is considered + * to be a sign bit if T is signed. */ - -#ifndef TYPE_INTEGRAL -#define TYPE_INTEGRAL(type) (((type) 0.5) != 0.5) -#endif /* !defined TYPE_INTEGRAL */ +#define MAXVAL(t, b) \ + ((t) (((t) 1 << ((b) - 1 - TYPE_SIGNED(t))) \ + - 1 + ((t) 1 << ((b) - 1 - TYPE_SIGNED(t))))) +#define MINVAL(t, b) \ + ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0)) #ifndef INT_STRLEN_MAXIMUM /* @@ -95,34 +95,36 @@ extern const char *scheck(const char *string, const char *format); * add one more for a minus sign if the type is signed. */ #define INT_STRLEN_MAXIMUM(type) \ - ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) + ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \ + 1 + TYPE_SIGNED(type)) #endif /* !defined INT_STRLEN_MAXIMUM */ +/* + * INITIALIZE(x) + */ +#define INITIALIZE(x) ((x) = 0) + #undef _ #define _(msgid) (msgid) #ifndef YEARSPERREPEAT -#define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ +#define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ #endif /* !defined YEARSPERREPEAT */ /* -** The Gregorian year averages 365.2425 days, which is 31556952 seconds. -*/ + * The Gregorian year averages 365.2425 days, which is 31556952 seconds. + */ #ifndef AVGSECSPERYEAR -#define AVGSECSPERYEAR 31556952L +#define AVGSECSPERYEAR 31556952L #endif /* !defined AVGSECSPERYEAR */ #ifndef SECSPERREPEAT -#define SECSPERREPEAT ((int64) YEARSPERREPEAT * (int64) AVGSECSPERYEAR) +#define SECSPERREPEAT ((int64) YEARSPERREPEAT * (int64) AVGSECSPERYEAR) #endif /* !defined SECSPERREPEAT */ #ifndef SECSPERREPEAT_BITS -#define SECSPERREPEAT_BITS 34 /* ceil(log2(SECSPERREPEAT)) */ +#define SECSPERREPEAT_BITS 34 /* ceil(log2(SECSPERREPEAT)) */ #endif /* !defined SECSPERREPEAT_BITS */ -/* - * UNIX was a registered trademark of The Open Group in 2003. - */ - #endif /* !defined PRIVATE_H */ |