From 2f4ae5acab46e60bd9f931b9b1fe9044ed3256da9f60f80febeabd1e4a215c34 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Fri, 18 Mar 2016 10:09:33 +0000 Subject: [PATCH] Accepting request 374223 from home:leonardocf:branches:Base:System Timezone update 2016b [boo#971377] OBS-URL: https://build.opensuse.org/request/show/374223 OBS-URL: https://build.opensuse.org/package/show/Base:System/timezone?expand=0&rev=170 --- iso3166-uk.diff | 8 +- timezone-java.changes | 24 +++ timezone-java.spec | 8 +- timezone-java.spec.in | 2 +- timezone.changes | 24 +++ timezone.spec | 8 +- tzcode-fromname.patch | 10 +- tzcode-revert-01-8c9cb9580.patch | 60 ++++++ tzcode-revert-02-301f794f3.patch | 96 ++++++++++ tzcode-revert-03-39fd078a6.patch | 319 +++++++++++++++++++++++++++++++ tzcode-zic.diff | 8 +- tzcode2016a.tar.gz | 3 - tzcode2016a.tar.gz.asc | 17 -- tzcode2016b.tar.gz | 3 + tzcode2016b.tar.gz.asc | 17 ++ tzdata-china.diff | 26 +-- tzdata2016a.tar.gz | 3 - tzdata2016a.tar.gz.asc | 17 -- tzdata2016b.tar.gz | 3 + tzdata2016b.tar.gz.asc | 17 ++ 20 files changed, 604 insertions(+), 69 deletions(-) create mode 100644 tzcode-revert-01-8c9cb9580.patch create mode 100644 tzcode-revert-02-301f794f3.patch create mode 100644 tzcode-revert-03-39fd078a6.patch delete mode 100644 tzcode2016a.tar.gz delete mode 100644 tzcode2016a.tar.gz.asc create mode 100644 tzcode2016b.tar.gz create mode 100644 tzcode2016b.tar.gz.asc delete mode 100644 tzdata2016a.tar.gz delete mode 100644 tzdata2016a.tar.gz.asc create mode 100644 tzdata2016b.tar.gz create mode 100644 tzdata2016b.tar.gz.asc diff --git a/iso3166-uk.diff b/iso3166-uk.diff index 5d56268..e7059a0 100644 --- a/iso3166-uk.diff +++ b/iso3166-uk.diff @@ -1,8 +1,8 @@ -Index: timezone-2014i/iso3166.tab +Index: timezone-2016b/iso3166.tab =================================================================== ---- timezone-2014i.orig/iso3166.tab -+++ timezone-2014i/iso3166.tab -@@ -100,7 +100,7 @@ FM Micronesia +--- timezone-2016b.orig/iso3166.tab ++++ timezone-2016b/iso3166.tab +@@ -99,7 +99,7 @@ FM Micronesia FO Faroe Islands FR France GA Gabon diff --git a/timezone-java.changes b/timezone-java.changes index 36c4c7a..0b995ee 100644 --- a/timezone-java.changes +++ b/timezone-java.changes @@ -1,3 +1,27 @@ +------------------------------------------------------------------- +Thu Mar 17 06:52:00 UTC 2016 - lchiquitto@suse.com + +- timezone update 2016b [boo#971377] + * New zones Europe/Astrakhan and Europe/Ulyanovsk for Astrakhan + and Ulyanovsk Oblasts, Russia, both of which will switch from + +03 to +04 on 2016-03-27 at 02:00 local time. + * New zone Asia/Barnaul for Altai Krai and Altai Republic, Russia, + which will switch from +06 to +07 on the same date and local time. + * Asia/Sakhalin moves from +10 to +11 on 2016-03-27 at 02:00. + * As a trial of a new system that needs less information to be made + up, the new zones use numeric time zone abbreviations like "+04" + instead of invented abbreviations like "ASTT". + * Haiti will not observe DST in 2016. + * Palestine's spring-forward transition on 2016-03-26 is at 01:00, + not 00:00. + * tzselect's diagnostics and checking, and checktab.awk's checking, + have been improved. + * tzselect now tests Julian-date TZ settings more accurately. + (Thanks to J William Piggott.) +- tzcode-revert-01-8c9cb9580.patch, tzcode-revert-02-301f794f3.patch, + tzcode-revert-03-39fd078a6.patch: Revert some porting fixes specific + to MS-Windows that rewrites parts of zic touched by our patches. + ------------------------------------------------------------------- Thu Jan 28 07:37:16 UTC 2016 - astieger@suse.com diff --git a/timezone-java.spec b/timezone-java.spec index 935fb6a..8f39afa 100644 --- a/timezone-java.spec +++ b/timezone-java.spec @@ -25,7 +25,7 @@ License: BSD-3-Clause and SUSE-Public-Domain Group: System/Base # COMMON-BEGIN # COMMON-BEGIN -Version: 2016a +Version: 2016b Release: 0 Source: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz Source1: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz @@ -33,6 +33,9 @@ Source2: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz.asc Source3: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz.asc # http://sks.mrball.net/pks/lookup?op=get&search=0xED97E90E62AA7E34 Source4: timezone.keyring +Patch100: tzcode-revert-01-8c9cb9580.patch +Patch101: tzcode-revert-02-301f794f3.patch +Patch102: tzcode-revert-03-39fd078a6.patch Patch0: tzdata-china.diff Patch1: tzcode-zic.diff # PATCH-FIX-OPENSUSE bnc#845530 @@ -59,6 +62,9 @@ package is intended for Java Virtual Machine based on OpenJDK. %setup -c -a 1 # COMMON-PREP-BEGIN # COMMON-PREP-BEGIN +%patch100 -p1 -R +%patch101 -p1 -R +%patch102 -p1 -R %patch0 -p1 %patch1 -p1 %patch2 -p1 diff --git a/timezone-java.spec.in b/timezone-java.spec.in index 0af5e1e..213d43d 100644 --- a/timezone-java.spec.in +++ b/timezone-java.spec.in @@ -1,7 +1,7 @@ # # spec file for package timezone-java # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed diff --git a/timezone.changes b/timezone.changes index 36c4c7a..0b995ee 100644 --- a/timezone.changes +++ b/timezone.changes @@ -1,3 +1,27 @@ +------------------------------------------------------------------- +Thu Mar 17 06:52:00 UTC 2016 - lchiquitto@suse.com + +- timezone update 2016b [boo#971377] + * New zones Europe/Astrakhan and Europe/Ulyanovsk for Astrakhan + and Ulyanovsk Oblasts, Russia, both of which will switch from + +03 to +04 on 2016-03-27 at 02:00 local time. + * New zone Asia/Barnaul for Altai Krai and Altai Republic, Russia, + which will switch from +06 to +07 on the same date and local time. + * Asia/Sakhalin moves from +10 to +11 on 2016-03-27 at 02:00. + * As a trial of a new system that needs less information to be made + up, the new zones use numeric time zone abbreviations like "+04" + instead of invented abbreviations like "ASTT". + * Haiti will not observe DST in 2016. + * Palestine's spring-forward transition on 2016-03-26 is at 01:00, + not 00:00. + * tzselect's diagnostics and checking, and checktab.awk's checking, + have been improved. + * tzselect now tests Julian-date TZ settings more accurately. + (Thanks to J William Piggott.) +- tzcode-revert-01-8c9cb9580.patch, tzcode-revert-02-301f794f3.patch, + tzcode-revert-03-39fd078a6.patch: Revert some porting fixes specific + to MS-Windows that rewrites parts of zic touched by our patches. + ------------------------------------------------------------------- Thu Jan 28 07:37:16 UTC 2016 - astieger@suse.com diff --git a/timezone.spec b/timezone.spec index 9c58546..7fe2139 100644 --- a/timezone.spec +++ b/timezone.spec @@ -23,7 +23,7 @@ Group: System/Base Url: http://www.iana.org/time-zones PreReq: filesystem, coreutils # COMMON-BEGIN -Version: 2016a +Version: 2016b Release: 0 Source: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz Source1: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz @@ -31,6 +31,9 @@ Source2: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz.asc Source3: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz.asc # http://sks.mrball.net/pks/lookup?op=get&search=0xED97E90E62AA7E34 Source4: timezone.keyring +Patch100: tzcode-revert-01-8c9cb9580.patch +Patch101: tzcode-revert-02-301f794f3.patch +Patch102: tzcode-revert-03-39fd078a6.patch Patch0: tzdata-china.diff Patch1: tzcode-zic.diff # PATCH-FIX-OPENSUSE bnc#845530 @@ -53,6 +56,9 @@ can select an appropriate time zone for your system with YaST. %prep %setup -q -c -a 1 # COMMON-PREP-BEGIN +%patch100 -p1 -R +%patch101 -p1 -R +%patch102 -p1 -R %patch0 -p1 %patch1 -p1 %patch2 -p1 diff --git a/tzcode-fromname.patch b/tzcode-fromname.patch index 5b350fc..f9d913d 100644 --- a/tzcode-fromname.patch +++ b/tzcode-fromname.patch @@ -1,8 +1,8 @@ -Index: timezone-2015d/zic.c +Index: timezone-2016b/zic.c =================================================================== ---- timezone-2015d.orig/zic.c -+++ timezone-2015d/zic.c -@@ -757,7 +757,7 @@ dolink(const char *const fromfield, cons +--- timezone-2016b.orig/zic.c ++++ timezone-2016b/zic.c +@@ -768,7 +768,7 @@ dolink(char const *fromfield, char const result = link(fromname, toname); if (result != 0) { @@ -11,7 +11,7 @@ Index: timezone-2015d/zic.c const char *t; char *p; size_t dotdots = 0; -@@ -766,10 +766,10 @@ dolink(const char *const fromfield, cons +@@ -777,10 +777,10 @@ dolink(char const *fromfield, char const do t = s; while ((s = strchr(s, '/')) diff --git a/tzcode-revert-01-8c9cb9580.patch b/tzcode-revert-01-8c9cb9580.patch new file mode 100644 index 0000000..809499b --- /dev/null +++ b/tzcode-revert-01-8c9cb9580.patch @@ -0,0 +1,60 @@ +commit 8c9cb958078b470e352a58f7f2d756544051e59b +Author: Paul Eggert +Date: Fri Feb 26 12:36:17 2016 -0800 + + Fix asctime_r warning with MS-Windows + + Problem reported by Ian Abbott in: + http://mm.icann.org/pipermail/tz/2016-February/023291.html + * Makefile (CFLAGS): Add comment about new -D option. + * private.h (HAVE_DECL_ASCTIME_R): New macro. + (asctime_r): Depend on this, not on HAVE_POSIX_DECLS. + +diff --git a/Makefile b/Makefile +index 20c2c98..5e2fb52 100644 +--- a/Makefile ++++ b/Makefile +@@ -106,6 +106,7 @@ LDLIBS= + + # Add the following to the end of the "CFLAGS=" line as needed. + # -DBIG_BANG=-9999999LL if the Big Bang occurred at time -9999999 (see zic.c) ++# -DHAVE_DECL_ASCTIME_R=0 if does not declare asctime_r + # -DHAVE_DIRECT_H if mkdir needs (MS-Windows) + # -DHAVE_DOS_FILE_NAMES if file names have drive specifiers etc. (MS-DOS) + # -DHAVE_GETTEXT=1 if 'gettext' works (GNU, Linux, Solaris); also see LDLIBS +diff --git a/private.h b/private.h +index e23764d..941e91b 100644 +--- a/private.h ++++ b/private.h +@@ -22,6 +22,10 @@ + ** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'. + */ + ++#ifndef HAVE_DECL_ASCTIME_R ++#define HAVE_DECL_ASCTIME_R 1 ++#endif ++ + #ifndef HAVE_GETTEXT + #define HAVE_GETTEXT 0 + #endif /* !defined HAVE_GETTEXT */ +@@ -386,17 +390,11 @@ time_t time(time_t *); + void tzset(void); + #endif + +-/* +-** Some time.h implementations don't declare asctime_r. +-** Others might define it as a macro. +-** Fix the former without affecting the latter. +-** Similarly for timezone, daylight, and altzone. +-*/ ++#if !HAVE_DECL_ASCTIME_R && !defined asctime_r ++extern char *asctime_r(struct tm const *restrict, char *restrict); ++#endif + + #if !HAVE_POSIX_DECLS +-# ifndef asctime_r +-extern char * asctime_r(struct tm const *restrict, char *restrict); +-# endif + # ifdef USG_COMPAT + # ifndef timezone + extern long timezone; diff --git a/tzcode-revert-02-301f794f3.patch b/tzcode-revert-02-301f794f3.patch new file mode 100644 index 0000000..b621070 --- /dev/null +++ b/tzcode-revert-02-301f794f3.patch @@ -0,0 +1,96 @@ +commit 301f794f33d145b08fbf7f5247c8663d404fabb5 +Author: Paul Eggert +Date: Fri Feb 26 08:58:45 2016 -0800 + + Fix tzname redefinition in MS-Windows + + Problem reported by Ian Abbott in: + http://mm.icann.org/pipermail/tz/2016-February/023289.html + * localtime.c (tzname): Don’t define if HAVE_POSIX_DECLS, + as causes the Microsoft compiler to complain that tzname + is redeclared without dllimport. + * localtime.c, private.h (altzone): Do define even if + HAVE_POSIX_DECLS, since this is not a POSIX-specified variable. + +diff --git a/localtime.c b/localtime.c +index e3bc763..276ce34 100644 +--- a/localtime.c ++++ b/localtime.c +@@ -178,11 +178,6 @@ static struct state gmtmem; + static char lcl_TZname[TZ_STRLEN_MAX + 1]; + static int lcl_is_set; + +-char * tzname[2] = { +- (char *) wildabbr, +- (char *) wildabbr +-}; +- + /* + ** Section 4.12.3 of X3.159-1989 requires that + ** Except for the strftime function, these functions [asctime, +@@ -193,10 +188,16 @@ char * tzname[2] = { + + static struct tm tm; + +-#ifdef USG_COMPAT ++#if !HAVE_POSIX_DECLS ++char * tzname[2] = { ++ (char *) wildabbr, ++ (char *) wildabbr ++}; ++# ifdef USG_COMPAT + long timezone; + int daylight; +-#endif /* defined USG_COMPAT */ ++# endif ++#endif + + #ifdef ALTZONE + long altzone; +diff --git a/private.h b/private.h +index 6080e71..e23764d 100644 +--- a/private.h ++++ b/private.h +@@ -386,8 +386,6 @@ time_t time(time_t *); + void tzset(void); + #endif + +-#if !HAVE_POSIX_DECLS +- + /* + ** Some time.h implementations don't declare asctime_r. + ** Others might define it as a macro. +@@ -395,24 +393,24 @@ void tzset(void); + ** Similarly for timezone, daylight, and altzone. + */ + +-#ifndef asctime_r ++#if !HAVE_POSIX_DECLS ++# ifndef asctime_r + extern char * asctime_r(struct tm const *restrict, char *restrict); +-#endif +- +-#ifdef USG_COMPAT +-# ifndef timezone +-extern long timezone; + # endif +-# ifndef daylight ++# ifdef USG_COMPAT ++# ifndef timezone ++extern long timezone; ++# endif ++# ifndef daylight + extern int daylight; ++# endif + # endif + #endif ++ + #if defined ALTZONE && !defined altzone + extern long altzone; + #endif + +-#endif +- + /* + ** The STD_INSPIRED functions are similar, but most also need + ** declarations if time_tz is defined. diff --git a/tzcode-revert-03-39fd078a6.patch b/tzcode-revert-03-39fd078a6.patch new file mode 100644 index 0000000..0cccaa2 --- /dev/null +++ b/tzcode-revert-03-39fd078a6.patch @@ -0,0 +1,319 @@ +commit 39fd078a694fa762de5ae7efceca1dbfb7be94b3 +Author: Paul Eggert +Date: Fri Feb 26 03:33:54 2016 -0800 + + Port better to MS-Windows + + Problems reported by Ian Abbott in: + http://mm.icann.org/pipermail/tz/2016-February/023286.html + http://mm.icann.org/pipermail/tz/2016-February/023287.html + * Makefile (CFLAGS): Add comment about new -D options. + * date.c (environ, optarg, optind, tzname): + * private.h (asctime_r, timezone, daylight, altzone): + * strftime.c (tzname): + * zdump.c (environ, getopt, optarg, optind, tzname): + * zic.c (getopt, link, optarg, optind): + Do not declare if HAVE_POSIX_DECLS, to avoid collisions with + system declarations, which is a problem with MS-Windows + and tzname and the dllimport attribute. + * date.c, zdump.c (tzname): Do not specify size, as POSIX doesn’t. + * private.h (HAVE_POSIX_DECLS): Default to 1. + (ENOTSUP): Default to EINVAL. + * zic.c: If HAVE_DIRECT_H, include direct.h and io.h and + define a mkdir macro, for MS-Windows. + (link, symlink): Set errno to ENOTSUP in the substitutes. + (dolink): Don’t complain merely because link and/or + symlink is not supported. Be a bit more economical and robust + about checking for directories and existing destinations. + Report errno-related string on link failures. + (itsdir): Work correctly even if a directory has a timestamp that + is out of time_t range, so that stat fails with errno == + EOVERFLOW. + (writezone): Don’t remove files we can’t stat. + +diff --git a/Makefile b/Makefile +index 568f7f6..20c2c98 100644 +--- a/Makefile ++++ b/Makefile +@@ -106,6 +106,7 @@ LDLIBS= + + # Add the following to the end of the "CFLAGS=" line as needed. + # -DBIG_BANG=-9999999LL if the Big Bang occurred at time -9999999 (see zic.c) ++# -DHAVE_DIRECT_H if mkdir needs (MS-Windows) + # -DHAVE_DOS_FILE_NAMES if file names have drive specifiers etc. (MS-DOS) + # -DHAVE_GETTEXT=1 if 'gettext' works (GNU, Linux, Solaris); also see LDLIBS + # -DHAVE_INCOMPATIBLE_CTIME_R=1 if your system's time.h declares +@@ -116,6 +117,8 @@ LDLIBS= + # -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz + # This defaults to 1 if a working localtime_rz seems to be available. + # localtime_rz can make zdump significantly faster, but is nonstandard. ++# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare ++# functions like 'link' or variables like 'tzname' required by POSIX + # -DHAVE_STDINT_H=1 if you have a pre-C99 compiler with "stdint.h" + # -DHAVE_STRFTIME_L=1 if declares locale_t and strftime_l + # This defaults to 0 if _POSIX_VERSION < 200809, 1 otherwise. +diff --git a/date.c b/date.c +index 824e57d..4c11f61 100644 +--- a/date.c ++++ b/date.c +@@ -42,10 +42,12 @@ + #define SECSPERMIN 60 + #endif /* !defined SECSPERMIN */ + ++#if !HAVE_POSIX_DECLS + extern char ** environ; + extern char * optarg; + extern int optind; +-extern char * tzname[2]; ++extern char * tzname[]; ++#endif + + static int retval = EXIT_SUCCESS; + +diff --git a/private.h b/private.h +index 1c176e6..6080e71 100644 +--- a/private.h ++++ b/private.h +@@ -34,6 +34,10 @@ + #define HAVE_LINK 1 + #endif /* !defined HAVE_LINK */ + ++#ifndef HAVE_POSIX_DECLS ++#define HAVE_POSIX_DECLS 1 ++#endif ++ + #ifndef HAVE_STRDUP + #define HAVE_STRDUP 1 + #endif +@@ -106,6 +110,9 @@ + #ifndef ENAMETOOLONG + # define ENAMETOOLONG EINVAL + #endif ++#ifndef ENOTSUP ++# define ENOTSUP EINVAL ++#endif + #ifndef EOVERFLOW + # define EOVERFLOW EINVAL + #endif +@@ -379,6 +386,8 @@ time_t time(time_t *); + void tzset(void); + #endif + ++#if !HAVE_POSIX_DECLS ++ + /* + ** Some time.h implementations don't declare asctime_r. + ** Others might define it as a macro. +@@ -402,6 +411,8 @@ extern int daylight; + extern long altzone; + #endif + ++#endif ++ + /* + ** The STD_INSPIRED functions are similar, but most also need + ** declarations if time_tz is defined. +diff --git a/strftime.c b/strftime.c +index 7a139bd..f75f9fd 100644 +--- a/strftime.c ++++ b/strftime.c +@@ -106,7 +106,9 @@ static char * _fmt(const char *, const struct tm *, char *, const char *, + int *); + static char * _yconv(int, int, bool, bool, char *, char const *); + ++#if !HAVE_POSIX_DECLS + extern char * tzname[]; ++#endif + + #ifndef YEAR_2000_NAME + #define YEAR_2000_NAME "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS" +diff --git a/zdump.c b/zdump.c +index 063a263..64d90f6 100644 +--- a/zdump.c ++++ b/zdump.c +@@ -238,12 +238,14 @@ enum { SECSPER400YEARS_FITS = SECSPERLYEAR <= INTMAX_MAX / 400 }; + # define timezone_t char ** + #endif + ++#if !HAVE_POSIX_DECLS + extern char ** environ; + extern int getopt(int argc, char * const argv[], + const char * options); + extern char * optarg; + extern int optind; +-extern char * tzname[2]; ++extern char * tzname[]; ++#endif + + /* The minimum and maximum finite time values. */ + enum { atime_shift = CHAR_BIT * sizeof (time_t) - 2 }; +diff --git a/zic.c b/zic.c +index 78ab870..0ec3359 100644 +--- a/zic.c ++++ b/zic.c +@@ -22,6 +22,13 @@ typedef int_fast64_t zic_t; + #define ZIC_MAX_ABBR_LEN_WO_WARN 6 + #endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */ + ++#ifdef HAVE_DIRECT_H ++# include ++# include ++# undef mkdir ++# define mkdir(name, mode) _mkdir(name) ++#endif ++ + #if HAVE_SYS_STAT_H + #include + #endif +@@ -87,17 +94,19 @@ struct zone { + zic_t z_untiltime; + }; + ++#if !HAVE_POSIX_DECLS + extern int getopt(int argc, char * const argv[], + const char * options); + extern int link(const char * fromname, const char * toname); + extern char * optarg; + extern int optind; ++#endif + + #if ! HAVE_LINK +-# define link(from, to) (-1) ++# define link(from, to) (errno = ENOTSUP, -1) + #endif + #if ! HAVE_SYMLINK +-# define symlink(from, to) (-1) ++# define symlink(from, to) (errno = ENOTSUP, -1) + #endif + + static void addtt(zic_t starttime, int type); +@@ -758,41 +767,47 @@ dolink(char const *fromfield, char const *tofield) + progname, fromname, e); + exit(EXIT_FAILURE); + } +- if (itsdir(toname) <= 0) +- remove(toname); + if (link(fromname, toname) != 0) { +- int result; ++ int link_errno = errno; ++ bool retry_if_link_supported = false; + +- if (! mkdirs(toname)) +- exit(EXIT_FAILURE); +- +- result = link(fromname, toname); +- if (result != 0) { +- const char *s = fromfield; +- const char *t; +- char *p; +- size_t dotdots = 0; +- register char * symlinkcontents = NULL; +- +- do +- t = s; +- while ((s = strchr(s, '/')) +- && ! strncmp (fromfield, tofield, +- ++s - fromfield)); +- +- for (s = tofield + (t - fromfield); *s; s++) +- dotdots += *s == '/'; +- symlinkcontents +- = emalloc(3 * dotdots + strlen(t) + 1); +- for (p = symlinkcontents; dotdots-- != 0; p += 3) +- memcpy(p, "../", 3); +- strcpy(p, t); +- result = symlink(symlinkcontents, toname); +- if (result == 0) +-warning(_("hard link failed, symbolic link used")); +- free(symlinkcontents); +- } +- if (result != 0) { ++ if (link_errno == ENOENT || link_errno == ENOTSUP) { ++ if (! mkdirs(toname)) ++ exit(EXIT_FAILURE); ++ retry_if_link_supported = true; ++ } ++ if ((link_errno == EEXIST || link_errno == ENOTSUP) ++ && itsdir(toname) == 0 ++ && (remove(toname) == 0 || errno == ENOENT)) ++ retry_if_link_supported = true; ++ if (retry_if_link_supported && link_errno != ENOTSUP) ++ link_errno = link(fromname, toname) == 0 ? 0 : errno; ++ if (link_errno != 0) { ++ const char *s = fromfield; ++ const char *t; ++ char *p; ++ size_t dotdots = 0; ++ char *symlinkcontents; ++ int symlink_result; ++ ++ do ++ t = s; ++ while ((s = strchr(s, '/')) ++ && strncmp(fromfield, tofield, ++s - fromfield) == 0); ++ ++ for (s = tofield + (t - fromfield); *s; s++) ++ dotdots += *s == '/'; ++ symlinkcontents = emalloc(3 * dotdots + strlen(t) + 1); ++ for (p = symlinkcontents; dotdots-- != 0; p += 3) ++ memcpy(p, "../", 3); ++ strcpy(p, t); ++ symlink_result = symlink(symlinkcontents, toname); ++ free(symlinkcontents); ++ if (symlink_result == 0) { ++ if (link_errno != ENOTSUP) ++ warning(_("symbolic link used because hard link failed: %s"), ++ strerror (link_errno)); ++ } else { + FILE *fp, *tp; + int c; + fp = fopen(fromname, "rb"); +@@ -815,8 +830,11 @@ warning(_("hard link failed, symbolic link used")); + putc(c, tp); + close_file(fp, fromname); + close_file(tp, toname); +- warning(_("link failed, copy used")); +- } ++ if (link_errno != ENOTSUP) ++ warning(_("copy used because hard link failed: %s"), ++ strerror (link_errno)); ++ } ++ } + } + free(fromname); + free(toname); +@@ -863,18 +881,17 @@ itsdir(char const *name) + { + struct stat st; + int res = stat(name, &st); +- if (res != 0) +- return res; + #ifdef S_ISDIR +- return S_ISDIR(st.st_mode) != 0; +-#else +- { ++ if (res == 0) ++ return S_ISDIR(st.st_mode) != 0; ++#endif ++ if (res == 0 || errno == EOVERFLOW) { + char *nameslashdot = relname(name, "."); +- res = stat(nameslashdot, &st); ++ bool dir = stat(nameslashdot, &st) == 0 || errno == EOVERFLOW; + free(nameslashdot); +- return res == 0; ++ return dir; + } +-#endif ++ return -1; + } + + /* +@@ -1685,7 +1702,7 @@ writezone(const char *const name, const char *const string, char version) + /* + ** Remove old file, if any, to snap links. + */ +- if (itsdir(fullname) <= 0 && remove(fullname) != 0 && errno != ENOENT) { ++ if (itsdir(fullname) == 0 && remove(fullname) != 0 && errno != ENOENT) { + const char *e = strerror(errno); + + fprintf(stderr, _("%s: Can't remove %s: %s\n"), diff --git a/tzcode-zic.diff b/tzcode-zic.diff index 35b3615..625cef2 100644 --- a/tzcode-zic.diff +++ b/tzcode-zic.diff @@ -1,8 +1,8 @@ -Index: timezone-2015d/zic.c +Index: timezone-2016b/zic.c =================================================================== ---- timezone-2015d.orig/zic.c -+++ timezone-2015d/zic.c -@@ -777,8 +777,10 @@ dolink(const char *const fromfield, cons +--- timezone-2016b.orig/zic.c ++++ timezone-2016b/zic.c +@@ -788,8 +788,10 @@ dolink(char const *fromfield, char const memcpy(p, "../", 3); strcpy(p, t); result = symlink(symlinkcontents, toname); diff --git a/tzcode2016a.tar.gz b/tzcode2016a.tar.gz deleted file mode 100644 index f404832..0000000 --- a/tzcode2016a.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11ae66d59b844e8c6c81914c9dd73b666627bd7792855ba9de195eee4520c28d -size 184047 diff --git a/tzcode2016a.tar.gz.asc b/tzcode2016a.tar.gz.asc deleted file mode 100644 index c774320..0000000 --- a/tzcode2016a.tar.gz.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iQIcBAABAgAGBQJWqHJCAAoJEO2X6Q5iqn40vggP/iUDh0UDG3g9lQfV41yXx+Dg -4Ln+RVSEkfKE82ffPSJzvyRQzp1l/U2alopcI+Ernou7hmcrYYcJC827QZ+boiLv -uK5/LIDqI/uBb6j3bxt2aiymsbL1+q4C3RDypujKa4lh0kuinO6MUTpnIEGmNdAl -l0q6pWyJfH4UYxT8UCjCvJrNQwMxCD+31oz4blUMUr3h/TdAfd/uRs0xm06Fi6ss -HSzJ1P2gej4uTdGzuWczbZrCdkpLvZXhYt/kIQ3tOl+9bAJOJa0/3zVuIxUO6DNL -w4RRaHbdtvtDUw7vqGcIe2nZHZ4GdRfHINi2sflHfH6auq53x6mWiOGbDqAMQkk4 -2HFnHr8sawB+6TA8vSgayOKg+Ja2eX/4IXBqrGBzt96a0AfJDgWlulgA5oc6lQvy -BAYtgXYfUTg05EEZOIvL1kDR3CZJB2v6U72DVT8y6Bs52w1ue1/7HfhY9N5hHor5 -nCeaeqoQLopMdfpMn3pATqRXvTFsxmlDaN8Y2S6IZyvQgPqpPGBdaH0i+Ran5bXf -vKCRpxS6rsSvOdliNCnr2hytk5UrRdxuLJ6yWiUjhVBszGISUR15w2iwK26NifIR -ZbMV4e2bcZl7kGcq+dIeTtjAoXeP+Bh3Y3NfIq37O1NK8gsx31GfGMVifJYxE4ti -qtlircuZtjdkQR0GmACZ -=cUhj ------END PGP SIGNATURE----- diff --git a/tzcode2016b.tar.gz b/tzcode2016b.tar.gz new file mode 100644 index 0000000..b9b3758 --- /dev/null +++ b/tzcode2016b.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e935c4fe78b5c5da3791f58f3ab7f07fb059a7c71d6b62b69ef345211ae5dfa7 +size 192043 diff --git a/tzcode2016b.tar.gz.asc b/tzcode2016b.tar.gz.asc new file mode 100644 index 0000000..3afee88 --- /dev/null +++ b/tzcode2016b.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQIcBAABAgAGBQJW5MM9AAoJEO2X6Q5iqn40ptQP/2aU2c7blSof/PppmYUs/+Vg +X+96FtZyN2JeUSdn5MjhquLlIaib8fg/vqLQJrcrBtansAwXzhpQ8bfSxv4wxFGS +kij7H+37ym/KKW8pLPQFLORaNqGYKIpbBYq+aXYLvIycUgmNVX9hTIbvhbFWp8Vb +n1GxzZX+p/b6Iyi7j+yEUmI+cGkNoZsHpBIqpG3mZbVc63bzPCvzOujBq3zQ4IG8 +Mho/UWoqEIrCeBllFkdqPQ3i63MdE87OdtF2jXDgcDdrw/rBpuT84fp4a2rPkvIM +TJf6NjIzY5D9jehkUoC0pKO5iVVvRTGAExpYr9R+jsddo1mp37V29NKLXOfnEFXK +rTfXvvVDddF57rXZhV9oo0mMBCjT+5+5ZTnx2d1s+4zhZ9lrlMm/PfNWwf6d7/q9 +Q68pqYrcLgc07vKm7wiLnNxSUL8aK5QvN5iGIFR4Qwxv/2Jl7tdHc+yRWtleOazg +VLdagXMCtLB01pLatuc08yrXqLVwysUyLxhwiQ4S9dURh82KHzwQnaHFRUsT8T8v +8Gu3IKkGSHZofVE3hkwLJTmP9q+QAWyd71ealTKbpnAVeGPpmSAxUfi8tk1xRolA +VZ+axKVRap4kdYVZqfwXBCPR1ImCLGBYf5umEfokUwKeWxvek5ff0rtEziYCKmjO +iNm3Lnij0Iefpj1wUQfV +=nUaG +-----END PGP SIGNATURE----- diff --git a/tzdata-china.diff b/tzdata-china.diff index 2d5dd66..e80b7b6 100644 --- a/tzdata-china.diff +++ b/tzdata-china.diff @@ -1,8 +1,8 @@ -Index: timezone-2015d/asia +Index: timezone-2016b/asia =================================================================== ---- timezone-2015d.orig/asia -+++ timezone-2015d/asia -@@ -516,6 +516,10 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1: +--- timezone-2016b.orig/asia ++++ timezone-2016b/asia +@@ -518,6 +518,10 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1: Zone Asia/Shanghai 8:05:43 - LMT 1901 8:00 Shang C%sT 1949 8:00 PRC C%sT @@ -13,11 +13,11 @@ Index: timezone-2015d/asia # Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi # / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.) Zone Asia/Urumqi 5:50:20 - LMT 1928 -Index: timezone-2015d/backward +Index: timezone-2016b/backward =================================================================== ---- timezone-2015d.orig/backward -+++ timezone-2015d/backward -@@ -93,7 +93,7 @@ Link America/Mexico_City Mexico/General +--- timezone-2016b.orig/backward ++++ timezone-2016b/backward +@@ -94,7 +94,7 @@ Link America/Mexico_City Mexico/General Link Pacific/Auckland NZ Link Pacific/Chatham NZ-CHAT Link America/Denver Navajo @@ -26,12 +26,12 @@ Index: timezone-2015d/backward Link Pacific/Pohnpei Pacific/Ponape Link Pacific/Pago_Pago Pacific/Samoa Link Pacific/Chuuk Pacific/Truk -Index: timezone-2015d/zone.tab +Index: timezone-2016b/zone.tab =================================================================== ---- timezone-2015d.orig/zone.tab -+++ timezone-2015d/zone.tab -@@ -143,6 +143,7 @@ CK -2114-15946 Pacific/Rarotonga - CL -3327-07040 America/Santiago most locations +--- timezone-2016b.orig/zone.tab ++++ timezone-2016b/zone.tab +@@ -144,6 +144,7 @@ CK -2114-15946 Pacific/Rarotonga + CL -3327-07040 America/Santiago Chile (most areas) CL -2709-10926 Pacific/Easter Easter Island CM +0403+00942 Africa/Douala +CN +3955+11626 Asia/Beijing China Standard Time diff --git a/tzdata2016a.tar.gz b/tzdata2016a.tar.gz deleted file mode 100644 index f3643d6..0000000 --- a/tzdata2016a.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5efa6b324e64ef921ef700ac3273a51895f672684a30e342f68e47871c6a8cd1 -size 302817 diff --git a/tzdata2016a.tar.gz.asc b/tzdata2016a.tar.gz.asc deleted file mode 100644 index 33c1e0e..0000000 --- a/tzdata2016a.tar.gz.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iQIcBAABAgAGBQJWqHJHAAoJEO2X6Q5iqn40O/QP/0dWxkvnViAXibpFmZeQF9qC -18S3oL35D9CwWdIo60zmQ1K4lzq7k3K4fCs+VAZnlp8DeqxbnX/utfFsxRGBZu9F -fHYeIyxPB+Gm45SE3USefZgD38LDDmEIkeQ+SE3geDSVKMO/gHGk55jl/8vylm1d -bIdU/1PNSr5EZt2LlXuRRO1lnQ6cW1G5vDtGj4nyB++/FDIi4qsBMQy21qqRs2K3 -vcw3yRQbqz7rEUxG/k0d9KU/dRUY980f4pHx2kkYpRKL2nhLeYqH3jfRUhOgwupS -Yp4fVFF1gZWbxjcf8Xb97jpCW0q4TL4wPYFQNOsLJJGtNeRP1Pgz7FsjH1qwSUy2 -blX1UWhtFAjUnHF+XO7Z5DUexoq1+14OFWSGwxuGpwUNxgtMmRr4KZVuKg9ag7jC -hKoegozcf90lZ+PmuAXNbz1S9DcILRFG7qnV+E3oKPjyOQBnU1z7Mx0rtleT14iQ -Pdi0ygv4/9cs07dOsF3oqRfwqldYogYF0/O3559eQzGfKdxOIu0eLZV9PLaCnAoM -2zpnPOBqBIwUHRynd6EBJyeu1WCRoC/oIvEs8A8QINf6EN/Fu/Xxgmf8HwwRIOE+ -xgJeNE4Z4xjWiCmu7dvBZJIZZi7dmWaHwste+WxUMZ0boDsYOmnkGCclpSb+MzpX -49a9DUdrNMurifgNd4vy -=WafQ ------END PGP SIGNATURE----- diff --git a/tzdata2016b.tar.gz b/tzdata2016b.tar.gz new file mode 100644 index 0000000..8c97d0d --- /dev/null +++ b/tzdata2016b.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6392091d92556a32de488ea06a055c51bc46b7d8046c8a677f0ccfe286b3dbdc +size 305437 diff --git a/tzdata2016b.tar.gz.asc b/tzdata2016b.tar.gz.asc new file mode 100644 index 0000000..d8f4748 --- /dev/null +++ b/tzdata2016b.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQIcBAABAgAGBQJW5MNIAAoJEO2X6Q5iqn40GOIP/3nMNTy9HANyUl+iIlRRHeDB +2S8/VCOulJO6rWwLysuqAoKlHr2Ibrvr78N2v0H64KUGsnncVV4DJdy4l3u2r+Os +Mf4RumPxdeVoLBWejlN2ASPwc2AujlTUrelscW4TVB3fRkjPu6uPqyhpNEYaryM3 +UEvcib7KQvdGzK5jONIpUqqn4khrB7j/ccJ3ma7IlUIOSRku8fTneF4kYwpuqonI +ewwJ34zJAevzKSvUpRbbg7m9ODl//5zA7vvCoF9/Mk1mnmcYXAQ2dZHwp+tRtNAw +NtVwiQ4ATYgnQpiwUr8SzRST3o2KiSOQl+q5nAJhNAu4uYDYcYd2BkFZboVb1JMo +ZRrrxaYEt7ruPNsQMrLiDtt/T7526QrGZ566TNFkeqE+b7jYhM6eB1yTyMmNt54c +EKoRDmK6BsrK4v/UWvDZVBbLD3USo9E8rRKem/mbu6/1LgPKlRBSHG8y4OUAZ+LL ++86nSiPm8vujj4oKHBLCr7mbaCKn0eEjKOVCZ/kFa5/5XoHyfU2nSeX71SP2frvy +vnpFwCRMnaphhjQpetVj1vFTOpnUjVFGNAgHlEDqYH82B5KONLnzSE6uLX5+tVPh +sQ6ZsH6Nvkg5gCsDidtYuL6barDn1+EJD7ekYIxty+triARc7vB6AQdXWJRT2lmF +Z1yJqqtod0FsXF5DAiSx +=kNEq +-----END PGP SIGNATURE-----