From: Sergey Poznyakoff Date: Sun, 22 Aug 2010 02:25:46 +0000 (+0300) Subject: Don't apply file transformations to volume names. X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=372ac37d01a218e87ad6279c43a75c1b88c1d41f;p=chaz%2Ftar 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 --- diff --git a/src/list.c b/src/list.c index e1e5bf2..d15653d 100644 --- a/src/list.c +++ b/src/list.c @@ -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) { diff --git a/tests/Makefile.am b/tests/Makefile.am index e2e338a..1026570 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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\ diff --git a/tests/testsuite.at b/tests/testsuite.at index d8b9b09..e69031c 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.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]) diff --git a/tests/xform-h.at b/tests/xform-h.at index 28de384..d51a0a6 100644 --- a/tests/xform-h.at +++ b/tests/xform-h.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 \ No newline at end of file diff --git a/tests/xform01.at b/tests/xform01.at new file mode 100644 index 0000000..71dcc43 --- /dev/null +++ b/tests/xform01.at @@ -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 +# 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 + + +