cvs commit: src/lib/libarchive archive_read_extract.c

Bruce Evans bde at zeta.org.au
Mon Jun 7 05:48:26 GMT 2004


On Sun, 6 Jun 2004, Tim Kientzle wrote:

> Bruce Evans wrote:
> > On Sun, 6 Jun 2004, Tim Kientzle wrote:
> >>The default padding behavior for bsdtar was changed quite
> >>a while ago to not pad regular files; are you sure you're up-to-date?
> >
> > Yes; not padding is a bug and the above says that I have it.
>
> I've discussed padding issues with a number of people, and
> the following behavior seems acceptable to most.  If you have
> reasons to disagree, please let me know:
> ...
> That is, archives written to regular files are not
> padded unless you explicitly specify a block size.
> ...
> (I just realized that padding when -b is explicitly
> specified is broken in -CURRENT; I'll commit the
> fix for that shortly.)

I only really care about this case.  Different behaviour for regular
files in the default case is just surprising.

> >>>bsdtar cf z foo/:
> >>
> >>Here, bsdtar cf z foo/  does follow the symlink, which I
> >>presume you believe to be the correct behavior?
> >
> > Yes.  foo/ is not a symlink (the slash forces folling the symlink) in the
> > kernel, so it should do so in utilities too.
>
> Good, then you agree that bsdtar does the right thing
> in this example.

The behaviour actually seems to be semi-random.  When I first tried
it yesterday. bsdtar followed the symlink.  It stopped following the
symlink before I wrote the mail.  Today with up to date libachive and
tar, it started with not following the symlink, then switched to
following it after I tried putting the symlink in a diferent directory
(/var/tmp/foo ->/tmp instead of /tmp/foo ->/tmp) and then moved back
to it being in /tmp.  Of course, I can't get it to fail again.  I
remember one sign of the problem in truss output: when bsdtar didn't
follow the symlink, it exited soon after __acl_mumble() returned ELOOP
(it was silent about this error and exited with status 0).  The file
system doesn't have acls, and all the acl calls return EOPNOTSUPP when
bsdtar works correctly.

Bruce


More information about the cvs-src mailing list