bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-tar] Bug in --remove-files with --append/-r


From: Nathan Stratton Treadway
Subject: Re: [Bug-tar] Bug in --remove-files with --append/-r
Date: Sat, 21 Sep 2013 13:12:34 -0400
User-agent: Mutt/1.5.20 (2009-06-14)

On Sat, Sep 21, 2013 at 01:29:25 -0400, Nathan Stratton Treadway wrote:
> So I wonder if the "proper" fix at this point would be to switch
> everything to using the "virtual chdir" approach?
> 
> (This seems a little strange, since it means changing the code path for
> --create, which is the branch that is currently working correctly -- but
> otherwise I think queue_deferred_unlink()/normalize_filename() would
> need to include support for both "actual" and "virtual" chdirs styles,
> which might be more painful in the long run.)

I realized that in addition to --append, the same problem happens when
using --create in incremental mode:

$ mkdir foo
$ echo bar > bar
$ echo foo/bar > foo/bar
$ rm subdir/foo 
$ find
.
./foo
./foo/bar
./bar
$ tar -cvf foo.tar --listed-incremental=foo.snar0 --remove-files  -C foo bar
bar
$ find
.
./foo
./foo/bar
./foo.snar0
./foo.tar
$ tar -xOf foo.tar bar
foo/bar

(So, once again the correct file is included in the archive, but the wrong one
gets deleted.)


This results from the fact that in incremental mode create_archive()
uses "name_from_list ()" instead of "name_next (1)", and thus the
queue_deferred_unlink() calls run into the same problem as in the
--append case.

                                                
                                                        Nathan
----------------------------------------------------------------------------
Nathan Stratton Treadway  -  address@hidden  -  Mid-Atlantic region
Ray Ontko & Co.  -  Software consulting services  -   http://www.ontko.com/
 GPG Key: http://www.ontko.com/~nathanst/gpg_key.txt   ID: 1023D/ECFB6239
 Key fingerprint = 6AD8 485E 20B9 5C71 231C  0C32 15F3 ADCD ECFB 6239



reply via email to

[Prev in Thread] Current Thread [Next in Thread]