X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=restore%2Futilities.c;h=f052071484824a7fc41db11ad265f0e90507c728;hb=ddf0df5b77e1a86207bf944b90ba70ac472df923;hp=02c3793acdc61590e1d583eb53e2f2290906b737;hpb=ebcbe7f6c10482913b60fc792e72e494b439b242;p=dump.git diff --git a/restore/utilities.c b/restore/utilities.c index 02c3793..f052071 100644 --- a/restore/utilities.c +++ b/restore/utilities.c @@ -40,7 +40,7 @@ #ifndef lint static const char rcsid[] = - "$Id: utilities.c,v 1.7 2000/01/21 10:17:41 stelian Exp $"; + "$Id: utilities.c,v 1.8 2000/02/08 12:22:43 stelian Exp $"; #endif /* not lint */ #include @@ -244,6 +244,18 @@ linkit(char *existing, char *new, int type) ret = link(existing, new); chflags(existing, s.st_flags); } +#else + unsigned long s; + + /* + * Most likely, the immutable or append-only attribute + * is set. Clear the attributes and try again. + */ + if (fgetflags (existing, &s) != -1 && + fsetflags (existing, 0) != -1) { + ret = link(existing, new); + fsetflags(existing, s); + } #endif if (ret < 0) { warn("warning: cannot create hard link %s->%s",