forked from pool/timezone
Accepting request 433650 from Base:System
timezone update 2016g * Turkey will remain on UTC+03 after 2016-10-30 bsc#997830 * prevents broken symlinks with 2016g bsc#1003324 OBS-URL: https://build.opensuse.org/request/show/433650 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/timezone?expand=0&rev=109
This commit is contained in:
commit
fca72d2d78
@ -1,66 +0,0 @@
|
|||||||
From 6d5fc7fed0690f22574a9b795575e2bb7962716c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tim Parenti <tim@timtimeonline.com>
|
|
||||||
Date: Mon, 18 Jul 2016 23:10:36 -0400
|
|
||||||
Subject: [PATCH] Positive leap second on 2016-12-31
|
|
||||||
|
|
||||||
* leap-seconds.list: Per IERS Bulletin C52 (2016-07-06), a
|
|
||||||
positive leap second will be inserted into the UTC time scale at the end
|
|
||||||
of 2016-12-31. Update file from NIST, retrieved from
|
|
||||||
<ftp://time.nist.gov/pub/leap-seconds.list>.
|
|
||||||
---
|
|
||||||
leap-seconds.list | 13 +++++++------
|
|
||||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/leap-seconds.list b/leap-seconds.list
|
|
||||||
index 7552796..22fa785 100644
|
|
||||||
--- a/leap-seconds.list
|
|
||||||
+++ b/leap-seconds.list
|
|
||||||
@@ -143,7 +143,7 @@
|
|
||||||
# Boulder, Colorado
|
|
||||||
# Judah.Levine@nist.gov
|
|
||||||
#
|
|
||||||
-# Last Update of leap second values: 5 January 2015
|
|
||||||
+# Last Update of leap second values: 8 July 2016
|
|
||||||
#
|
|
||||||
# The following line shows this last update date in NTP timestamp
|
|
||||||
# format. This is the date on which the most recent change to
|
|
||||||
@@ -151,7 +151,7 @@
|
|
||||||
# be identified by the unique pair of characters in the first two
|
|
||||||
# columns as shown below.
|
|
||||||
#
|
|
||||||
-#$ 3629404800
|
|
||||||
+#$ 3676924800
|
|
||||||
#
|
|
||||||
# The NTP timestamps are in units of seconds since the NTP epoch,
|
|
||||||
# which is 1 January 1900, 00:00:00. The Modified Julian Day number
|
|
||||||
@@ -199,10 +199,10 @@
|
|
||||||
# current -- the update time stamp, the data and the name of the file
|
|
||||||
# will not change.
|
|
||||||
#
|
|
||||||
-# Updated through IERS Bulletin C51
|
|
||||||
-# File expires on: 28 December 2016
|
|
||||||
+# Updated through IERS Bulletin C52
|
|
||||||
+# File expires on: 28 June 2017
|
|
||||||
#
|
|
||||||
-#@ 3691872000
|
|
||||||
+#@ 3707596800
|
|
||||||
#
|
|
||||||
2272060800 10 # 1 Jan 1972
|
|
||||||
2287785600 11 # 1 Jul 1972
|
|
||||||
@@ -231,6 +231,7 @@
|
|
||||||
3439756800 34 # 1 Jan 2009
|
|
||||||
3550089600 35 # 1 Jul 2012
|
|
||||||
3644697600 36 # 1 Jul 2015
|
|
||||||
+3692217600 37 # 1 Jan 2017
|
|
||||||
#
|
|
||||||
# the following special comment contains the
|
|
||||||
# hash value of the data in this file computed
|
|
||||||
@@ -246,4 +247,4 @@
|
|
||||||
# the hash line is also ignored in the
|
|
||||||
# computation.
|
|
||||||
#
|
|
||||||
-#h afc03691 8ff53838 42080ba1 cdd22f1 48192c10
|
|
||||||
+#h dacf2c42 2c4765d6 3c797af8 2cf630eb 699c8c67
|
|
||||||
--
|
|
||||||
2.6.6
|
|
||||||
|
|
107
timezone-2016g-absolute-TZDEFAULT.patch
Normal file
107
timezone-2016g-absolute-TZDEFAULT.patch
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
From df9991a2186d4236ba1e97e6638fa53b578bc6d7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Date: Thu, 6 Oct 2016 11:47:17 -0700
|
||||||
|
Subject: [PATCH] Do not assume TZDEFAULT is relative.
|
||||||
|
|
||||||
|
Problem reported by Andreas Stieger in:
|
||||||
|
http://mm.icann.org/pipermail/tz/2016-October/024280.html
|
||||||
|
* NEWS: Document this.
|
||||||
|
* zic.c (relname): New function.
|
||||||
|
(dolink): Use it.
|
||||||
|
---
|
||||||
|
zic.c | 65 ++++++++++++++++++++++++++++++++++++++++++++---------------------
|
||||||
|
1 file changed, 44 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.suse.com/show_bug.cgi?id=1003324
|
||||||
|
|
||||||
|
diff --git a/zic.c b/zic.c
|
||||||
|
index 2505c11..eba223c 100644
|
||||||
|
--- a/zic.c
|
||||||
|
+++ b/zic.c
|
||||||
|
@@ -764,6 +764,44 @@ namecheck(const char *name)
|
||||||
|
return componentcheck(name, component, cp);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Create symlink contents suitable for symlinking FROM to TO, as a
|
||||||
|
+ freshly allocated string. FROM should be a relative file name, and
|
||||||
|
+ is relative to the global variable DIRECTORY. TO can be either
|
||||||
|
+ relative or absolute. */
|
||||||
|
+static char *
|
||||||
|
+relname(char const *from, char const *to)
|
||||||
|
+{
|
||||||
|
+ size_t i, taillen, dotdotetcsize;
|
||||||
|
+ size_t dir_len = 0, dotdots = 0, linksize = SIZE_MAX;
|
||||||
|
+ char const *f = from;
|
||||||
|
+ char *result = NULL;
|
||||||
|
+ if (*to == '/') {
|
||||||
|
+ /* Make F absolute too. */
|
||||||
|
+ size_t len = strlen(directory);
|
||||||
|
+ bool needslash = len && directory[len - 1] != '/';
|
||||||
|
+ linksize = len + needslash + strlen(from) + 1;
|
||||||
|
+ f = result = emalloc(linksize);
|
||||||
|
+ strcpy(result, directory);
|
||||||
|
+ result[len] = '/';
|
||||||
|
+ strcpy(result + len + needslash, from);
|
||||||
|
+ }
|
||||||
|
+ for (i = 0; f[i] && f[i] == to[i]; i++)
|
||||||
|
+ if (f[i] == '/')
|
||||||
|
+ dir_len = i + 1;
|
||||||
|
+ for (; f[i]; i++)
|
||||||
|
+ dotdots += f[i] == '/' && f[i - 1] != '/';
|
||||||
|
+ taillen = i - dir_len;
|
||||||
|
+ dotdotetcsize = 3 * dotdots + taillen + 1;
|
||||||
|
+ if (dotdotetcsize <= linksize) {
|
||||||
|
+ if (!result)
|
||||||
|
+ result = emalloc(dotdotetcsize);
|
||||||
|
+ for (i = 0; i < dotdots; i++)
|
||||||
|
+ memcpy(result + 3 * i, "../", 3);
|
||||||
|
+ memmove(result + 3 * dotdots, f + dir_len, taillen + 1);
|
||||||
|
+ }
|
||||||
|
+ return result;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
dolink(char const *fromfield, char const *tofield, bool staysymlink)
|
||||||
|
{
|
||||||
|
@@ -800,30 +838,15 @@ dolink(char const *fromfield, char const *tofield, bool staysymlink)
|
||||||
|
link_errno = link(fromfield, tofield) == 0 ? 0 : errno;
|
||||||
|
}
|
||||||
|
if (link_errno != 0) {
|
||||||
|
- const char *s = fromfield;
|
||||||
|
- const char *t;
|
||||||
|
- char *p;
|
||||||
|
- size_t dotdots = 0;
|
||||||
|
- char *symlinkcontents;
|
||||||
|
- int symlink_errno;
|
||||||
|
-
|
||||||
|
- 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_errno = symlink(symlinkcontents, tofield) == 0 ? 0 : errno;
|
||||||
|
+ bool absolute = *fromfield == '/';
|
||||||
|
+ char *linkalloc = absolute ? NULL : relname(fromfield, tofield);
|
||||||
|
+ char const *contents = absolute ? fromfield : linkalloc;
|
||||||
|
+ int symlink_errno = symlink(contents, tofield) == 0 ? 0 : errno;
|
||||||
|
if (symlink_errno == ENOENT && !todirs_made) {
|
||||||
|
mkdirs(tofield, true);
|
||||||
|
- symlink_errno = symlink(symlinkcontents, tofield) == 0 ? 0 : errno;
|
||||||
|
+ symlink_errno = symlink(contents, tofield) == 0 ? 0 : errno;
|
||||||
|
}
|
||||||
|
- free(symlinkcontents);
|
||||||
|
+ free(linkalloc);
|
||||||
|
if (symlink_errno == 0) {
|
||||||
|
if (link_errno != ENOTSUP)
|
||||||
|
warning(_("symbolic link used because hard link failed: %s"),
|
||||||
|
--
|
||||||
|
2.10.1
|
||||||
|
|
@ -1,3 +1,38 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 6 19:14:45 UTC 2016 - astieger@suse.com
|
||||||
|
|
||||||
|
- timezone update 2016g:
|
||||||
|
* Turkey will remain on UTC+03 after 2016-10-30 bsc#997830
|
||||||
|
* New leap second 2016-12-31 23:59:60 UTC
|
||||||
|
Remove 0001-Positive-leap-second-on-2016-12-31.patch
|
||||||
|
* Corrections for past DST transitions
|
||||||
|
* Antarcica and nautical time zones now use numeric time zone
|
||||||
|
abbreviations instead of obsolete alphanumeric ones
|
||||||
|
* Renamed Asia/Rangoon to Asia/Yangon
|
||||||
|
* The following change was previously patched in the package
|
||||||
|
and is now upstream:
|
||||||
|
+ If the installed localtime and/or posixrules files are
|
||||||
|
symbolic links, zic now keeps them symbolic links when
|
||||||
|
updating them, for compatibility with platforms like
|
||||||
|
openSUSE where other programs configure these files as
|
||||||
|
symlinks.
|
||||||
|
+ zic now avoids hard linking to symbolic links, avoids
|
||||||
|
some unnecessary mkdir and stat system calls, and uses
|
||||||
|
shorter file names internally.
|
||||||
|
+ Drop the patches:
|
||||||
|
tzcode-link.diff
|
||||||
|
tzcode-revert-01-8c9cb9580.patch
|
||||||
|
tzcode-revert-02-301f794f3.patch
|
||||||
|
tzcode-revert-03-39fd078a6.patch
|
||||||
|
tzcode-symlink.patch
|
||||||
|
tzcode-zic.diff
|
||||||
|
tzcode-fromname.patch
|
||||||
|
+ Upstream changes did not account for TZDEFAULT being an
|
||||||
|
absolute path. Prevent broken symlinks (bsc#1003324),
|
||||||
|
add timezone-2016g-absolute-TZDEFAULT.patch
|
||||||
|
* zdump has a new -i option to generate transitions in a
|
||||||
|
more-compact but still human-readable format. (experimental)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Aug 8 17:29:14 UTC 2016 - astieger@suse.com
|
Mon Aug 8 17:29:14 UTC 2016 - astieger@suse.com
|
||||||
|
|
||||||
|
58
timezone-java.keyring
Normal file
58
timezone-java.keyring
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: SKS 1.1.5
|
||||||
|
Comment: Hostname: pgp.mit.edu
|
||||||
|
|
||||||
|
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
|
||||||
|
oi8buNcby4U=
|
||||||
|
=w6kQ
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
@ -25,26 +25,17 @@ License: BSD-3-Clause and SUSE-Public-Domain
|
|||||||
Group: System/Base
|
Group: System/Base
|
||||||
# COMMON-BEGIN
|
# COMMON-BEGIN
|
||||||
# COMMON-BEGIN
|
# COMMON-BEGIN
|
||||||
Version: 2016f
|
Version: 2016g
|
||||||
Release: 0
|
Release: 0
|
||||||
Source: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz
|
Source: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz
|
||||||
Source1: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz
|
Source1: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz
|
||||||
Source2: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz.asc
|
Source2: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz.asc
|
||||||
Source3: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz.asc
|
Source3: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz.asc
|
||||||
# http://sks.mrball.net/pks/lookup?op=get&search=0xED97E90E62AA7E34
|
Source4: %{name}.keyring
|
||||||
Source4: timezone.keyring
|
Source5: %{name}.changes
|
||||||
Patch100: tzcode-revert-01-8c9cb9580.patch
|
|
||||||
Patch101: tzcode-revert-02-301f794f3.patch
|
|
||||||
Patch102: tzcode-revert-03-39fd078a6.patch
|
|
||||||
Patch0: tzdata-china.diff
|
Patch0: tzdata-china.diff
|
||||||
Patch1: tzcode-zic.diff
|
|
||||||
# PATCH-FIX-OPENSUSE bnc#845530
|
|
||||||
Patch2: tzcode-fromname.patch
|
|
||||||
Patch3: iso3166-uk.diff
|
Patch3: iso3166-uk.diff
|
||||||
Patch4: tzcode-link.diff
|
Patch4: timezone-2016g-absolute-TZDEFAULT.patch
|
||||||
Patch5: tzcode-symlink.patch
|
|
||||||
# PATCH-FIX-UPSTREAM 0001-Positive-leap-second-on-2016-12-31.patch bsc#988184
|
|
||||||
Patch6: 0001-Positive-leap-second-on-2016-12-31.patch
|
|
||||||
# COMMON-END
|
# COMMON-END
|
||||||
# COMMON-END
|
# COMMON-END
|
||||||
Url: http://www.gnu.org/software/libc/libc.html
|
Url: http://www.gnu.org/software/libc/libc.html
|
||||||
@ -64,19 +55,9 @@ package is intended for Java Virtual Machine based on OpenJDK.
|
|||||||
%setup -c -a 1
|
%setup -c -a 1
|
||||||
# COMMON-PREP-BEGIN
|
# COMMON-PREP-BEGIN
|
||||||
# COMMON-PREP-BEGIN
|
# COMMON-PREP-BEGIN
|
||||||
%patch100 -p1 -R
|
|
||||||
%patch101 -p1 -R
|
|
||||||
%patch102 -p1 -R
|
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%if 0%{?suse_version} < 1220
|
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%else
|
|
||||||
%patch5 -p1
|
|
||||||
%endif
|
|
||||||
%patch6 -p1
|
|
||||||
sed -ri 's@/usr/local/etc/zoneinfo@%{_datadir}/zoneinfo@g' *.[1358]
|
sed -ri 's@/usr/local/etc/zoneinfo@%{_datadir}/zoneinfo@g' *.[1358]
|
||||||
# COMMON-PREP-END
|
# COMMON-PREP-END
|
||||||
# COMMON-PREP-END
|
# COMMON-PREP-END
|
||||||
|
@ -1,3 +1,38 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 6 19:14:45 UTC 2016 - astieger@suse.com
|
||||||
|
|
||||||
|
- timezone update 2016g:
|
||||||
|
* Turkey will remain on UTC+03 after 2016-10-30 bsc#997830
|
||||||
|
* New leap second 2016-12-31 23:59:60 UTC
|
||||||
|
Remove 0001-Positive-leap-second-on-2016-12-31.patch
|
||||||
|
* Corrections for past DST transitions
|
||||||
|
* Antarcica and nautical time zones now use numeric time zone
|
||||||
|
abbreviations instead of obsolete alphanumeric ones
|
||||||
|
* Renamed Asia/Rangoon to Asia/Yangon
|
||||||
|
* The following change was previously patched in the package
|
||||||
|
and is now upstream:
|
||||||
|
+ If the installed localtime and/or posixrules files are
|
||||||
|
symbolic links, zic now keeps them symbolic links when
|
||||||
|
updating them, for compatibility with platforms like
|
||||||
|
openSUSE where other programs configure these files as
|
||||||
|
symlinks.
|
||||||
|
+ zic now avoids hard linking to symbolic links, avoids
|
||||||
|
some unnecessary mkdir and stat system calls, and uses
|
||||||
|
shorter file names internally.
|
||||||
|
+ Drop the patches:
|
||||||
|
tzcode-link.diff
|
||||||
|
tzcode-revert-01-8c9cb9580.patch
|
||||||
|
tzcode-revert-02-301f794f3.patch
|
||||||
|
tzcode-revert-03-39fd078a6.patch
|
||||||
|
tzcode-symlink.patch
|
||||||
|
tzcode-zic.diff
|
||||||
|
tzcode-fromname.patch
|
||||||
|
+ Upstream changes did not account for TZDEFAULT being an
|
||||||
|
absolute path. Prevent broken symlinks (bsc#1003324),
|
||||||
|
add timezone-2016g-absolute-TZDEFAULT.patch
|
||||||
|
* zdump has a new -i option to generate transitions in a
|
||||||
|
more-compact but still human-readable format. (experimental)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Aug 8 17:29:14 UTC 2016 - astieger@suse.com
|
Mon Aug 8 17:29:14 UTC 2016 - astieger@suse.com
|
||||||
|
|
||||||
|
@ -1,28 +1,58 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Version: SKS 1.1.5+
|
Version: SKS 1.1.5
|
||||||
Comment: Hostname: keys2.kfwebs.net
|
Comment: Hostname: pgp.mit.edu
|
||||||
|
|
||||||
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
|
||||||
=+hBC
|
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
|
||||||
|
oi8buNcby4U=
|
||||||
|
=w6kQ
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
@ -23,26 +23,17 @@ Group: System/Base
|
|||||||
Url: http://www.iana.org/time-zones
|
Url: http://www.iana.org/time-zones
|
||||||
PreReq: filesystem, coreutils
|
PreReq: filesystem, coreutils
|
||||||
# COMMON-BEGIN
|
# COMMON-BEGIN
|
||||||
Version: 2016f
|
Version: 2016g
|
||||||
Release: 0
|
Release: 0
|
||||||
Source: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz
|
Source: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz
|
||||||
Source1: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz
|
Source1: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz
|
||||||
Source2: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz.asc
|
Source2: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz.asc
|
||||||
Source3: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz.asc
|
Source3: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz.asc
|
||||||
# http://sks.mrball.net/pks/lookup?op=get&search=0xED97E90E62AA7E34
|
Source4: %{name}.keyring
|
||||||
Source4: timezone.keyring
|
Source5: %{name}.changes
|
||||||
Patch100: tzcode-revert-01-8c9cb9580.patch
|
|
||||||
Patch101: tzcode-revert-02-301f794f3.patch
|
|
||||||
Patch102: tzcode-revert-03-39fd078a6.patch
|
|
||||||
Patch0: tzdata-china.diff
|
Patch0: tzdata-china.diff
|
||||||
Patch1: tzcode-zic.diff
|
|
||||||
# PATCH-FIX-OPENSUSE bnc#845530
|
|
||||||
Patch2: tzcode-fromname.patch
|
|
||||||
Patch3: iso3166-uk.diff
|
Patch3: iso3166-uk.diff
|
||||||
Patch4: tzcode-link.diff
|
Patch4: timezone-2016g-absolute-TZDEFAULT.patch
|
||||||
Patch5: tzcode-symlink.patch
|
|
||||||
# PATCH-FIX-UPSTREAM 0001-Positive-leap-second-on-2016-12-31.patch bsc#988184
|
|
||||||
Patch6: 0001-Positive-leap-second-on-2016-12-31.patch
|
|
||||||
# COMMON-END
|
# COMMON-END
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
@ -58,19 +49,9 @@ can select an appropriate time zone for your system with YaST.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -c -a 1
|
%setup -q -c -a 1
|
||||||
# COMMON-PREP-BEGIN
|
# COMMON-PREP-BEGIN
|
||||||
%patch100 -p1 -R
|
|
||||||
%patch101 -p1 -R
|
|
||||||
%patch102 -p1 -R
|
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%if 0%{?suse_version} < 1220
|
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%else
|
|
||||||
%patch5 -p1
|
|
||||||
%endif
|
|
||||||
%patch6 -p1
|
|
||||||
sed -ri 's@/usr/local/etc/zoneinfo@%{_datadir}/zoneinfo@g' *.[1358]
|
sed -ri 's@/usr/local/etc/zoneinfo@%{_datadir}/zoneinfo@g' *.[1358]
|
||||||
# COMMON-PREP-END
|
# COMMON-PREP-END
|
||||||
|
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
Index: timezone-2016b/zic.c
|
|
||||||
===================================================================
|
|
||||||
--- 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) {
|
|
||||||
- const char *s = fromfield;
|
|
||||||
+ const char *s = fromname;
|
|
||||||
const char *t;
|
|
||||||
char *p;
|
|
||||||
size_t dotdots = 0;
|
|
||||||
@@ -777,10 +777,10 @@ dolink(char const *fromfield, char const
|
|
||||||
do
|
|
||||||
t = s;
|
|
||||||
while ((s = strchr(s, '/'))
|
|
||||||
- && ! strncmp (fromfield, tofield,
|
|
||||||
- ++s - fromfield));
|
|
||||||
+ && ! strncmp (fromname, tofield,
|
|
||||||
+ ++s - fromname));
|
|
||||||
|
|
||||||
- for (s = tofield + (t - fromfield); *s; s++)
|
|
||||||
+ for (s = tofield + (t - fromname); *s; s++)
|
|
||||||
dotdots += *s == '/';
|
|
||||||
symlinkcontents
|
|
||||||
= emalloc(3 * dotdots + strlen(t) + 1);
|
|
@ -1,54 +0,0 @@
|
|||||||
This patch is used on openSUSE versions older than 12.2.
|
|
||||||
Back then, /etc/localtime was either a hard link to a zone
|
|
||||||
file in /usr/share/zoneinfo or a copy of it.
|
|
||||||
|
|
||||||
By default, zic tries the following approaches to create
|
|
||||||
/etc/localtime:
|
|
||||||
|
|
||||||
1. Hard link
|
|
||||||
2. Symbolic link
|
|
||||||
3. File copy
|
|
||||||
|
|
||||||
This patch changes the order to:
|
|
||||||
|
|
||||||
1. Hard link
|
|
||||||
2. File copy
|
|
||||||
3. Symbolic link
|
|
||||||
|
|
||||||
Index: timezone-2015f/zic.c
|
|
||||||
===================================================================
|
|
||||||
--- timezone-2015f.orig/zic.c
|
|
||||||
+++ timezone-2015f/zic.c
|
|
||||||
@@ -738,6 +738,23 @@ relname(char const *dir, char const *bas
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int
|
|
||||||
+copy(fromname, toname)
|
|
||||||
+const char * const fromname;
|
|
||||||
+const char * const toname;
|
|
||||||
+{
|
|
||||||
+ if (!fork()) {
|
|
||||||
+ execl("/bin/cp", "cp", fromname, toname, (char*) NULL);
|
|
||||||
+ _exit(1);
|
|
||||||
+ }
|
|
||||||
+ int s;
|
|
||||||
+ if (wait(&s) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+ if (!WIFEXITED(s))
|
|
||||||
+ return -1;
|
|
||||||
+ return -WEXITSTATUS(s);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
dolink(char const *fromfield, char const *tofield)
|
|
||||||
{
|
|
||||||
@@ -767,6 +784,8 @@ dolink(char const *fromfield, char const
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
|
|
||||||
result = link(fromname, toname);
|
|
||||||
+ if (result != 0)
|
|
||||||
+ result = copy(fromname, toname);
|
|
||||||
if (result != 0) {
|
|
||||||
const char *s = fromname;
|
|
||||||
const char *t;
|
|
@ -1,60 +0,0 @@
|
|||||||
commit 8c9cb958078b470e352a58f7f2d756544051e59b
|
|
||||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
|
||||||
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 <time.h> does not declare asctime_r
|
|
||||||
# -DHAVE_DIRECT_H if mkdir needs <direct.h> (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;
|
|
@ -1,96 +0,0 @@
|
|||||||
commit 301f794f33d145b08fbf7f5247c8663d404fabb5
|
|
||||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
|
||||||
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.
|
|
@ -1,319 +0,0 @@
|
|||||||
commit 39fd078a694fa762de5ae7efceca1dbfb7be94b3
|
|
||||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
|
||||||
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 <direct.h> (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 <time.h> 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 <direct.h>
|
|
||||||
+# include <io.h>
|
|
||||||
+# undef mkdir
|
|
||||||
+# define mkdir(name, mode) _mkdir(name)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#if HAVE_SYS_STAT_H
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#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"),
|
|
@ -1,89 +0,0 @@
|
|||||||
This patch is used on openSUSE 12.2 or newer. Nowadays,
|
|
||||||
/etc/localtime is by default a symbolic link to a zone
|
|
||||||
file in /usr/share/zoneinfo.
|
|
||||||
|
|
||||||
By default, zic tries the following approaches to create
|
|
||||||
/etc/localtime:
|
|
||||||
|
|
||||||
1. Hard link
|
|
||||||
2. Symbolic link
|
|
||||||
3. File copy
|
|
||||||
|
|
||||||
This patch changes the logic slightly: keep using symbolic
|
|
||||||
links if /etc/localtime is already one. If it isn't, use
|
|
||||||
the default order as listed above.
|
|
||||||
|
|
||||||
Index: timezone-2015f/zic.c
|
|
||||||
===================================================================
|
|
||||||
--- timezone-2015f.orig/zic.c
|
|
||||||
+++ timezone-2015f/zic.c
|
|
||||||
@@ -105,7 +105,7 @@ static int addtype(zic_t, char const *,
|
|
||||||
static void leapadd(zic_t, bool, int, int);
|
|
||||||
static void adjleap(void);
|
|
||||||
static void associate(void);
|
|
||||||
-static void dolink(const char * fromfield, const char * tofield);
|
|
||||||
+static void dolink(const char * fromfield, const char * tofield, int defaultsymlink);
|
|
||||||
static char ** getfields(char * buf);
|
|
||||||
static zic_t gethms(const char * string, const char * errstring,
|
|
||||||
bool);
|
|
||||||
@@ -633,7 +633,7 @@ _("%s: More than one -L option specified
|
|
||||||
*/
|
|
||||||
for (i = 0; i < nlinks; ++i) {
|
|
||||||
eat(links[i].l_filename, links[i].l_linenum);
|
|
||||||
- dolink(links[i].l_from, links[i].l_to);
|
|
||||||
+ dolink(links[i].l_from, links[i].l_to, false);
|
|
||||||
if (noise)
|
|
||||||
for (j = 0; j < nlinks; ++j)
|
|
||||||
if (strcmp(links[i].l_to,
|
|
||||||
@@ -642,11 +642,11 @@ _("%s: More than one -L option specified
|
|
||||||
}
|
|
||||||
if (lcltime != NULL) {
|
|
||||||
eat(_("command line"), 1);
|
|
||||||
- dolink(lcltime, TZDEFAULT);
|
|
||||||
+ dolink(lcltime, TZDEFAULT, true);
|
|
||||||
}
|
|
||||||
if (psxrules != NULL) {
|
|
||||||
eat(_("command line"), 1);
|
|
||||||
- dolink(psxrules, TZDEFRULES);
|
|
||||||
+ dolink(psxrules, TZDEFRULES, false);
|
|
||||||
}
|
|
||||||
if (warnings && (ferror(stderr) || fclose(stderr) != 0))
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
@@ -739,14 +739,17 @@ relname(char const *dir, char const *bas
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-dolink(char const *fromfield, char const *tofield)
|
|
||||||
+dolink(char const *fromfield, char const *tofield, int defaultsymlink)
|
|
||||||
{
|
|
||||||
+ struct stat st;
|
|
||||||
register char * fromname;
|
|
||||||
register char * toname;
|
|
||||||
register int fromisdir;
|
|
||||||
|
|
||||||
fromname = relname(directory, fromfield);
|
|
||||||
toname = relname(directory, tofield);
|
|
||||||
+ if (lstat(fromname, &st) == 0 && S_ISLNK(st.st_mode))
|
|
||||||
+ defaultsymlink = true;
|
|
||||||
/*
|
|
||||||
** We get to be careful here since
|
|
||||||
** there's a fair chance of root running us.
|
|
||||||
@@ -760,14 +763,14 @@ dolink(char const *fromfield, char const
|
|
||||||
}
|
|
||||||
if (itsdir(toname) <= 0)
|
|
||||||
remove(toname);
|
|
||||||
- if (link(fromname, toname) != 0) {
|
|
||||||
+ if (defaultsymlink || link(fromname, toname) != 0) {
|
|
||||||
int result;
|
|
||||||
|
|
||||||
if (! mkdirs(toname))
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
-
|
|
||||||
- result = link(fromname, toname);
|
|
||||||
- if (result != 0) {
|
|
||||||
+ if (!defaultsymlink)
|
|
||||||
+ result = link(fromname, toname);
|
|
||||||
+ if ((defaultsymlink || (!defaultsymlink && result != 0))) {
|
|
||||||
const char *s = fromname;
|
|
||||||
const char *t;
|
|
||||||
char *p;
|
|
@ -1,15 +0,0 @@
|
|||||||
Index: timezone-2016b/zic.c
|
|
||||||
===================================================================
|
|
||||||
--- 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);
|
|
||||||
+#if 0
|
|
||||||
if (result == 0)
|
|
||||||
warning(_("hard link failed, symbolic link used"));
|
|
||||||
+#endif
|
|
||||||
free(symlinkcontents);
|
|
||||||
}
|
|
||||||
if (result != 0) {
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:72325f384490a310eeb2ea0fab7e6f011a5be19adab2ff9d83bf9d1993b066ed
|
|
||||||
size 194905
|
|
@ -1,11 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
Version: GnuPG v1
|
|
||||||
|
|
||||||
iQEcBAABAgAGBQJXe8puAAoJEAQ9tjdErUGMYo8IAKif54YlyHHNdLSWzAseY1jf
|
|
||||||
80hiZG4bIDVNXD5qNAN5sIf7FexBNS9h/KB3H2xJ+47UZHfBqEIRSdNM3+1cFhPg
|
|
||||||
EZShIc8PKPkjS3/pxdR+7Sz/JWGDq1FyNCnBNoyRhKAcDWH3rsa2L7Q3hvkZ7Xcg
|
|
||||||
8DlhCcixLSX/rhJEs7k61FcGXivUkrht8trrvoTTBkoFpGUqt+x+cNan0z0qyiqF
|
|
||||||
PLQq7YJAjstGRsli97+P72WdJDRY6JL716slICKO5IYDki9xmpcBuj4l0bAxR+6c
|
|
||||||
PiZWlePe1TTyT0+shefy0eZmq1F7seTmkpAL7bhPR3E4ATYZfJfsMm6b/5seBFs=
|
|
||||||
=62wb
|
|
||||||
-----END PGP SIGNATURE-----
|
|
3
tzcode2016g.tar.gz
Normal file
3
tzcode2016g.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:1ff90b47ad7986140a513b5287b1851c40f80fd44fd636db5cc5b46d06f9fa2b
|
||||||
|
size 203362
|
17
tzcode2016g.tar.gz.asc
Normal file
17
tzcode2016g.tar.gz.asc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
iQIcBAABAgAGBQJX2CTkAAoJEO2X6Q5iqn40/dsQAKZVDkj6jZNmdcS3qfArD30Z
|
||||||
|
U9K7AwLUlugG6WuwMzPYPp2zMNhdM3pVdfSrtgNPjGBJY4kISIiSnNx8CuvNUxlf
|
||||||
|
u+gnsPkr2qfEMEhjEKS9K4yeBi12Bo3WX7lxFJDSqXfQM389EIQufLdcpggQVnoZ
|
||||||
|
mbUCSGS3P+C+JCZBr3ltc6dZVo3OofduZR6rZauyKdHLsFo3UZgo3HZ1AgADU5KB
|
||||||
|
b+8JUAUMssOFr9dp61mF1WBlhHrg7+SubCZe5a4QggON73prhCQWtNFH/de76Ep0
|
||||||
|
vpjn9y8dbzjSGEuMGxRRH7aBN1XYOiTyBEO3rXYA5J93I7C0IXRD3hALCpqJH/+F
|
||||||
|
dw3lzEOHi7drX/WPS2eHYaHV6GtXs8BpU39lzPiyQ89ZwFDI+ed+IFx0F2nhGI4a
|
||||||
|
YnncsPwHtodhK5AnTifDA9F95MuAZiILBlMLklaFicbtVuptM/pHgSRKKbkjptfR
|
||||||
|
3M8XmCgw/1zOAyMvc0D7X5YBspKacXDnMNX4jGDtdKoDiUAEjNf2w4RXV9fYg7Wa
|
||||||
|
5RgcqqhAcSW1SpyUcHo+po6oXTELaBh7+QGPKqsdG8ntbaywqYNT6oJqkLtYzyVj
|
||||||
|
sraRd7+f0EXdgrYTi6rZim/v6VudEqGGBRVfenXzQPCwtaNY1/+UW+Ruo/Yqlo9k
|
||||||
|
Cs4QYazop8GmeH74lAIx
|
||||||
|
=+WWr
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:ed8c951008d12f1db55a11e96fc055718c6571233327d9de16a7f8475e2502b0
|
|
||||||
size 313286
|
|
@ -1,11 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
Version: GnuPG v1
|
|
||||||
|
|
||||||
iQEcBAABAgAGBQJXe8p1AAoJEAQ9tjdErUGMmc0H/i837mGKBIJLmS1xtr64uaT+
|
|
||||||
LLLvI1gFTGJsqTaCya7aAVFlN/STM07otvYdkBDwQ6uIgjm8qAL33lGdi9IpTPp2
|
|
||||||
YOj03QkWpyPRFtM1A9EcsVkKOfezGSiY7WQiOEk7R05lH1SRBlZ+eXVQl9fhadrj
|
|
||||||
qCRkcCasVIDQWMKCOhSch1HyUuR+Z1Ujomi7Z4d0AyQbMKhB1yGxYKCVGzN8KaOK
|
|
||||||
AFr0Dd44p72dqgPdC/V7G0xjTNOpuM1zt8SdJuOE2EASRraIvnnQctmKlbYI8l8L
|
|
||||||
ANvy9xl+p8VkuZi7yuSoqVSLYTQDE8pAMsfg0DZpAbnjV1G07FxekBMdNzdr5/E=
|
|
||||||
=7jGR
|
|
||||||
-----END PGP SIGNATURE-----
|
|
3
tzdata2016g.tar.gz
Normal file
3
tzdata2016g.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:3c7137b2bc47323b0de47b77786bacf81ed503d4b2c693ff8ada2fbd1281ebd1
|
||||||
|
size 316669
|
17
tzdata2016g.tar.gz.asc
Normal file
17
tzdata2016g.tar.gz.asc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
iQIcBAABAgAGBQJX2CTkAAoJEO2X6Q5iqn40i8IP/jtQ8PYjBG3NJV5uvRGzbV60
|
||||||
|
n1vdVJDMU9SkRpiT1G8p/cjr4mszUnm+qsZNZGg1wZknBuQdnglAMwA2lj8Llv5N
|
||||||
|
gAlGj/JDEsNESfOC+9wD+NtZK+aUxJzHSXl4xzhzCMjBKaPOytcLKuGscMrpcGFH
|
||||||
|
2IDyjdjHOfDNG5PAxu0wjkMsKFUt95wmuWzPu1x48EqCF5c2zhanQI3mrugnmLwm
|
||||||
|
MAnq69E+z1q/5WLOzZEfRGXm98BpS90PC89fWwiKdKciHvTVFO9XLz9pknaeRP4N
|
||||||
|
uNcGoF0zEB+unAKoQmMI248sQZ1DzQGRC/niZ9SG70xHSdtBQF19B4oNoh27h3jz
|
||||||
|
j2ZF262PZCL6J5SoEISqXRFkiZbRFR79uwUA5LQRyFWu4gg63wk85+gx8BjxwbPP
|
||||||
|
bUVtV4IBRScFdVC7Li3Xw5PF8cwfQRf0JAxTdtwSgY9tC2pEjomCkb9mzSMDz78w
|
||||||
|
CSFl6yNuL44atUmHK0XFCNIJnyoG0hNrIWwOx/zmlYnaX9Iqm6H9LmXaUcV3rg0N
|
||||||
|
uKaTWuvZQzgxRwbrq0NxH8O/B1LWmdOls4ZGoMboVpTracg6APATXJIaQjm+RKjH
|
||||||
|
EGtDiihPYP/WbrCg823uVPNHCbyoMcFrZB34ujjO89ObH8BsLJKmnUeQUCw74mok
|
||||||
|
D92yWr5OAzGJYJFpgUNr
|
||||||
|
=WYLD
|
||||||
|
-----END PGP SIGNATURE-----
|
Loading…
Reference in New Issue
Block a user