SHA256
1
0
forked from pool/timezone
timezone/tzcode-symlink.patch
Stephan Kulow b57b471fe2 Accepting request 139567 from Base:System
- update to 2012h (bnc#787005):
  * Samoa fall 2012 and later
  * Palestine fall 2012
  * Bahia no longer has DST
  * Tocantins has DST
  * Israel has new DST rules next year
  * Jordan stays on DST this winter

- update to 2012h (bnc#787005):
  * Samoa fall 2012 and later
  * Palestine fall 2012
  * Bahia no longer has DST
  * Tocantins has DST
  * Israel has new DST rules next year
  * Jordan stays on DST this winter

OBS-URL: https://build.opensuse.org/request/show/139567
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/timezone?expand=0&rev=66
2012-10-29 19:13:44 +00:00

64 lines
2.1 KiB
Diff

Index: timezone-2012h/zic.c
===================================================================
--- timezone-2012h.orig/zic.c
+++ timezone-2012h/zic.c
@@ -110,7 +110,7 @@ static int addtype(long gmtoff, const ch
static void leapadd(zic_t t, int positive, int rolling, int count);
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 long eitol(int i);
static char ** getfields(char * buf);
static long gethms(const char * string, const char * errstrng,
@@ -558,7 +558,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,
@@ -567,17 +567,17 @@ _("%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);
}
return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
static void
-dolink(const char *const fromfield, const char *const tofield)
+dolink(const char *const fromfield, const char *const tofield, int defaultsymlink)
{
register char * fromname;
register char * toname;
@@ -602,15 +602,16 @@ dolink(const char *const fromfield, cons
*/
if (!itsdir(toname))
(void) remove(toname);
- if (link(fromname, toname) != 0) {
+ if (defaultsymlink || link(fromname, toname) != 0) {
int result;
if (mkdirs(toname) != 0)
exit(EXIT_FAILURE);
- result = link(fromname, toname);
+ if (!defaultsymlink)
+ result = link(fromname, toname);
#if HAVE_SYMLINK
- if (result != 0 &&
+ if ((defaultsymlink || (!defaultsymlink && result != 0)) &&
access(fromname, F_OK) == 0 &&
!itsdir(fromname)) {
const char *s = tofield;