symlinks as fall back for hardlinks
Hi,
I use Debian on a file system where hard links acorss directories aren't
supported. I patched dpkg this way to create a symlink if it fails to
create a hard link.
#v+
diff -ur dpkg-1.10.25/main/archives.c dpkg-1.10.25.patched/main/archives.c
--- dpkg-1.10.25/main/archives.c 2004-11-11 21:10:03.000000000 +0100
+++ src/archives.c 2004-12-02 17:20:06.000000000 +0
@@ -570,8 +570,15 @@
varbufreset(&hardlinkfn);
varbufaddstr(&hardlinkfn,instdir); varbufaddc(&hardlinkfn,'/');
varbufaddstr(&hardlinkfn,ti->LinkName); varbufaddc(&hardlinkfn,0);
- if (link(hardlinkfn.buf,fnamenewvb.buf))
- ohshite(_("error creating hard link `%.255s'"),ti->Name);
+ if (link(hardlinkfn.buf,fnamenewvb.buf)) {
+ if (errno != EXDEV)
+ ohshite(_("error creating hard link `%.255s'"),ti->Name);
+
+ fprintf(stderr, "dpkg: warning - creation of hardlink failed %s -> %s"
+ " - making symlink\n", hardlinkfn.buf, fnamenewvb.buf);
+ if (symlink(hardlinkfn.buf,fnamenewvb.buf))
+ ohshite(_("error creating symbolic link `%.255s'"),ti->Name);
+ }
debug(dbg_eachfiledetail,"tarobject HardLink");
newtarobject_allmodes(fnamenewvb.buf,ti, nifd->namenode->statoverride);
break;
#v-
How do you think about applying this on dpkg?
Regards, Jörg.
--
Das Ganze ist mehr als die Summe seiner Teile. (Aristoteles)
Reply to: