SHA256
1
0
forked from pool/timezone
timezone/tzcode-link.diff
Petr Baudis 6616e71e99 - Make zic -l do a copy when hardlinking fails (e.g. because /usr
being on a separate partition) [bnc#607532]

- un-fuzz patches to fix build

OBS-URL: https://build.opensuse.org/package/show/Base:System/timezone?expand=0&rev=27
2010-08-24 10:38:30 +00:00

36 lines
739 B
Diff

--- zic.c 2010-01-06 16:21:33.000000000 +0100
+++ zic.c 2010-06-01 01:34:12.000000000 +0200
@@ -614,6 +614,23 @@
return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
+static int
+copy(fromname, toname)
+const char * const fromname;
+const char * const toname;
+{
+ if (!fork()) {
+ execlp("cp", "cp", fromname, toname);
+ _exit(1);
+ }
+ int s;
+ if (wait(&s) < 0)
+ return -1;
+ if (!WIFEXITED(s))
+ return -1;
+ return -WEXITSTATUS(s);
+}
+
static void
dolink(fromfield, tofield)
const char * const fromfield;
@@ -649,6 +666,8 @@
exit(EXIT_FAILURE);
result = link(fromname, toname);
+ if (result != 0)
+ result = copy(fromname, toname);
#if HAVE_SYMLINK
if (result != 0 &&
access(fromname, F_OK) == 0 &&