Don't apply file transformations to volume names.
* src/list.c (decode_header): Don't apply file transformations to volume names. * tests/xform01.at: New testcase. * tests/xform-h.at (xform): Rename macro to xformtest. Use pushdef/popdef. * tests/Makefile.am, tests/testsuite.at: Add xform01.at
This commit is contained in:
@@ -656,6 +656,10 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
|
||||
stat_info->is_dumpdir = true;
|
||||
}
|
||||
|
||||
if (header->header.typeflag == GNUTYPE_VOLHDR)
|
||||
/* Name transformations don't apply to volume headers. */
|
||||
return;
|
||||
|
||||
transform_member_name (&stat_info->file_name, XFORM_REGFILE);
|
||||
switch (header->header.typeflag)
|
||||
{
|
||||
|
||||
@@ -150,6 +150,7 @@ TESTSUITE_AT = \
|
||||
verbose.at\
|
||||
version.at\
|
||||
xform-h.at\
|
||||
xform01.at\
|
||||
star/gtarfail.at\
|
||||
star/gtarfail2.at\
|
||||
star/multi-fail.at\
|
||||
|
||||
@@ -123,6 +123,7 @@ m4_include([append01.at])
|
||||
m4_include([append02.at])
|
||||
|
||||
m4_include([xform-h.at])
|
||||
m4_include([xform01.at])
|
||||
|
||||
m4_include([exclude.at])
|
||||
m4_include([exclude01.at])
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
|
||||
# Test suite for GNU tar.
|
||||
# Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -30,7 +30,7 @@
|
||||
AT_SETUP([transforming hard links on create])
|
||||
AT_KEYWORDS([transform xform xform-h])
|
||||
|
||||
m4_define([xform],[
|
||||
m4_pushdef([xformtest],[
|
||||
echo "$1"
|
||||
tar cf archive --transform="s,^basedir/,,$2" basedir/test basedir/test_link
|
||||
tar tvf archive | sed -n 's/.*test_link link to //p'
|
||||
@@ -41,9 +41,9 @@ mkdir basedir
|
||||
echo "hello" > basedir/test
|
||||
ln basedir/test basedir/test_link
|
||||
|
||||
xform(Default transform scope)
|
||||
xform(Transforming hard links,h)
|
||||
xform(Not transforming hard links,H)
|
||||
xformtest(Default transform scope)
|
||||
xformtest(Transforming hard links,h)
|
||||
xformtest(Not transforming hard links,H)
|
||||
],
|
||||
[0],
|
||||
[Default transform scope
|
||||
@@ -54,6 +54,8 @@ Not transforming hard links
|
||||
basedir/test
|
||||
])
|
||||
|
||||
m4_popdef([xformtest])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
# End of xform-h.at
|
||||
43
tests/xform01.at
Normal file
43
tests/xform01.at
Normal file
@@ -0,0 +1,43 @@
|
||||
# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
|
||||
# Test suite for GNU tar.
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
||||
# This program 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, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program 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, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
|
||||
# Transformations should not apply to GNU volume labels.
|
||||
# Reported by: Thomas Graf <hausmeister@askja.de>
|
||||
# References: <4C72AB8D.3070706@askja.de>
|
||||
# http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00035.html
|
||||
|
||||
AT_SETUP([transformations and GNU volume labels])
|
||||
AT_KEYWORDS([transform xform xform01 volume])
|
||||
|
||||
AT_TAR_CHECK([
|
||||
genfile --file file
|
||||
tar -cf archive.tar -V /label/ file
|
||||
tar tf archive.tar
|
||||
],
|
||||
[0],
|
||||
[/label/
|
||||
file
|
||||
],
|
||||
[],[],[],[gnu])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user