Date: Fri, 20 Apr 2001 08:56:37 -0700 (PDT) From: Matthew Jacob <mjacob@feral.com> To: Yoshihiko SARUMARU <mistral@imasy.or.jp> Cc: freebsd-current@FreeBSD.ORG, dyama@bres.tsukuba.ac.jp, ush@netlab.is.tsukuba.ac.jp Subject: Re: restore doesn't restore ownership of symbolic link Message-ID: <Pine.BSF.4.21.0104200855040.13484-100000@beppo.feral.com> In-Reply-To: <010420232946.M0200857@mistral.imasy.or.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
It seems good, but shouldn't it be: ret = linkit(lnkbuf, name, SYMLINK); if (ret == 0) { if (lchown(name, uid, gid)) perror(name); if (lchmod(name, mode)) perror(name); lutimes(name, timep); } /* symbolic link doesn't have any flags */ return (ret); On Fri, 20 Apr 2001, Yoshihiko SARUMARU wrote: > Hello all, > > I will report to all that restore command doesn't restore the > property of symbolic link at all, that is owner, group, > permissions and utime. > > Yamazaki-san first reported this issue on USENET at > fj.os.bsd.freebsd. So I'm Cc'ing he and thread participater. > > I will propose below quick patch. How do you feel ? > > My environment is FreeBSD 4.3RC (today). Sorry I don't have > current environment. > > Thanks ! > > > before dump: > mistral# ls -l /mnt4 > total 1 > -rw-r--r-- 1 root wheel 5 1/ 3 17:33 foo > lrwxr-xr-x 1 yohta wheel 3 3/19 13:17 foos -> foo > > restore with 4.3-RC restore: > mistral# dump 0f - /mnt4 | ( cd /tmp/tmp ; restore rf - ) > ... > mistral# ls -l /tmp/tmp > total 53 > -rw-r--r-- 1 root wheel 5 1/ 3 17:33 foo > lrwx------ 1 root wheel 3 4/20 23:17 foos -> foo > -rw------- 1 root wheel 52580 4/20 23:17 restoresymtable > > restore with patch'ed restore: > mistral# dump 0f - /mnt4 | ( cd /tmp/tmp ; /home/yohta/restore/restore rf - ) > ... > mistral# ls -l > total 53 > -rw-r--r-- 1 root wheel 5 1/ 3 17:33 foo > lrwxr-xr-x 1 yohta wheel 3 3/19 13:17 foos -> foo > -rw------- 1 root wheel 52580 4/20 23:18 restoresymtable > > > Here is sample patch: > --- tape.c.orig Fri Apr 20 22:25:10 2001 > +++ tape.c Fri Apr 20 23:12:07 2001 > @@ -559,6 +559,14 @@ > return (genliteraldir(name, curfile.ino)); > > case IFLNK: > + { > + uid_t uid; > + gid_t gid; > + int ret; > + > + uid = curfile.dip->di_uid; > + gid = curfile.dip->di_gid; > + > lnkbuf[0] = '\0'; > pathlen = 0; > getfile(xtrlnkfile, xtrlnkskip); > @@ -567,7 +575,13 @@ > "%s: zero length symbolic link (ignored)\n", name); > return (GOOD); > } > - return (linkit(lnkbuf, name, SYMLINK)); > + ret = linkit(lnkbuf, name, SYMLINK); > + (void) lchown(name, uid, gid); > + (void) lchmod(name, mode); > + lutimes(name, timep); > + /* symbolic link doesn't have any flags */ > + return (ret); > + } > > case IFIFO: > vprintf(stdout, "extract fifo %s\n", name); > > -- > Yoshihiko SARUMARU > mail: mistral@imasy.or.jp web: http://www.imasy.or.jp/~mistral/ > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-current" in the body of the message > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0104200855040.13484-100000>