diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-04-16 13:02:10 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-04-16 13:02:10 +0300 |
commit | 15c02c2b9d383446b3ea35dbea5a048e136b020d (patch) | |
tree | 5e837d7ad98cd597af23085221338d9e4787f400 /tests/incr10.at | |
parent | 0c4aa85e6cab54f1c5b712bb59c4a1a07e26f6ec (diff) | |
download | tar-15c02c2b9d383446b3ea35dbea5a048e136b020d.tar.gz |
Fix extraction from concatenated incremental archives.
* src/common.h (remove_delayed_set_stat): New proto.
* src/extract.c (free_delayed_set_stat)
(remove_delayed_set_stat): New function.
(apply_nonancestor_delayed_set_stat): Use free_delayed_set_stat.
* src/misc.c (safer_rmdir): Remove delayed_set_stat entry
corresponding to the removed directory.
* tests/incr10.at: New test case.
* tests/Makefile.am: Add new test.
* tests/testsuite.at: Likewise.
Diffstat (limited to 'tests/incr10.at')
-rw-r--r-- | tests/incr10.at | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/incr10.at b/tests/incr10.at new file mode 100644 index 00000000..3b519265 --- /dev/null +++ b/tests/incr10.at @@ -0,0 +1,64 @@ +# Process this file with autom4te to create testsuite. -*- Autotest -*- +# Test suite for GNU tar. +# Copyright 2015 Free Software Foundation, Inc. +# +# GNU tar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# GNU tar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +AT_SETUP([concatenated incremental archives]) +AT_KEYWORDS([incremental concat cat incr10]) + +# Description: Extraction from concatenated incremental archives +# produced spurious error messages when trying to set file ownership +# and permissions on deleted directories. +# Reported by: Alex Efros <powerman@powerman.name> +# References: <20150411224008.GO24600@home.power> +# http://lists.gnu.org/archive/html/bug-tar/2015-04/msg00003.html + +AT_TAR_CHECK([ +mkdir in +mkdir in/dir +decho Level 0 +tar -cvf 1.tar -g snap -C in . +rmdir in/dir +decho Level 1 +tar -cvf 2.tar -g snap -C in . +cp 1.tar full.tar +decho Concat +tar -A 2.tar -f full.tar -g /dev/null +decho Extract +mkdir out +tar -xvf full.tar -g /dev/null -C out +], +[0], +[Level 0 +./ +./dir/ +Level 1 +./ +Concat +Extract +./ +./dir/ +./ +tar: Deleting './dir' +], +[Level 0 +tar: .: Directory is new +tar: ./dir: Directory is new +Level 1 +Concat +Extract +],[],[],[gnu]) + +AT_CLEANUP |