From: Ulrich Drepper Date: Fri, 30 Jan 1998 18:05:01 +0000 (+0000) Subject: (dolink): Use symlink if hard link failed with EXDEV. X-Git-Tag: cvs/before-sparc-2_0_x-branch~223 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70f37c4c3f2935efbf80644d6bd9a32f53a611cc;p=thirdparty%2Fglibc.git (dolink): Use symlink if hard link failed with EXDEV. --- diff --git a/time/zic.c b/time/zic.c index c95887c9b4b..c94c32206bc 100644 --- a/time/zic.c +++ b/time/zic.c @@ -601,10 +601,23 @@ const char * const tofile; if (!itsdir(toname)) (void) remove(toname); if (link(fromname, toname) != 0) { - if (mkdirs(toname) != 0) - (void) exit(EXIT_FAILURE); - if (link(fromname, toname) != 0) { - const char *e = strerror(errno); + int failure = errno; + if (failure == ENOENT) + if (mkdirs(toname) != 0) + failure = errno; + else if (link(fromname, toname) == 0) + failure = 0; + else + failure = errno; +#ifndef MISSING_SYMLINK + if (failure == EXDEV) + if (symlink(fromname, toname) != 0) + failure = errno; + else + failure = 0; +#endif + if (failure) { + const char *e = strerror(failure); (void) fprintf(stderr, _("%s: Can't link from %s to %s: %s\n"),