diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-10-27 14:07:46 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-10-27 14:07:46 +0300 |
commit | 5af29cb944c84e2d539ce9df527d63c29f6012b9 (patch) | |
tree | fa69890db97d71bd87c4978ad331358840d98e7d | |
parent | 7dd57ebdfa9ac0d2af4622449f45b5025f6c184f (diff) | |
download | tar-5af29cb944c84e2d539ce9df527d63c29f6012b9.tar.gz |
Transform file names when updating and appendig to archives.
This complements 28e91b48.
* src/common.h (transform_stat_info): New prototype.
* src/list.c (transform_stat_info): Remove static qualifier.
* src/update.c (update_archive): Call transform_stat_info.
* tests/Makefile.am (TESTSUITE_AT): Add append03.at
* tests/testsuite.at: Include append03.at
-rw-r--r-- | src/common.h | 1 | ||||
-rw-r--r-- | src/list.c | 2 | ||||
-rw-r--r-- | src/update.c | 2 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/append03.at | 43 | ||||
-rw-r--r-- | tests/testsuite.at | 1 |
6 files changed, 49 insertions, 1 deletions
diff --git a/src/common.h b/src/common.h index 192cf9e5..4a638240 100644 --- a/src/common.h +++ b/src/common.h @@ -550,6 +550,7 @@ extern size_t recent_long_link_blocks; void decode_header (union block *header, struct tar_stat_info *stat_info, enum archive_format *format_pointer, int do_user_group); +void transform_stat_info (int typeflag, struct tar_stat_info *stat_info); char const *tartime (struct timespec t, bool full_time); #define OFF_FROM_HEADER(where) off_from_header (where, sizeof (where)) @@ -116,7 +116,7 @@ transform_member_name (char **pinput, int type) return transform_name_fp (pinput, type, decode_xform, &type); } -static void +void transform_stat_info (int typeflag, struct tar_stat_info *stat_info) { if (typeflag == GNUTYPE_VOLHDR) diff --git a/src/update.c b/src/update.c index 69fa5924..e3228d42 100644 --- a/src/update.c +++ b/src/update.c @@ -130,6 +130,8 @@ update_archive (void) decode_header (current_header, ¤t_stat_info, ¤t_format, 0); + transform_stat_info (current_header->header.typeflag, + ¤t_stat_info); archive_format = current_format; if (subcommand_option == UPDATE_SUBCOMMAND diff --git a/tests/Makefile.am b/tests/Makefile.am index dd375f30..12e8c1b2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -52,6 +52,7 @@ TESTSUITE_AT = \ append.at\ append01.at\ append02.at\ + append03.at\ backup01.at\ chtype.at\ comprec.at\ diff --git a/tests/append03.at b/tests/append03.at new file mode 100644 index 00000000..8fb24c6f --- /dev/null +++ b/tests/append03.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, see <http://www.gnu.org/licenses/>. + +AT_SETUP([append with name transformation]) +AT_KEYWORDS([append append03]) + +# Description: Make sure filenames are transformed during append. + +AT_TAR_CHECK([ +genfile --file file.1 +genfile --file file.2 + +tar -c -f archive --transform 's/file/plik/' file.* +echo Appending +tar -r -f archive --transform 's/file/plik/' -v --show-transformed-names file.1 +echo Testing +tar tf archive +], +[0], +[Appending +plik.1 +Testing +plik.1 +plik.2 +plik.1 +]) + +AT_CLEANUP diff --git a/tests/testsuite.at b/tests/testsuite.at index 9aaafff1..d18b16e5 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -121,6 +121,7 @@ m4_include([verbose.at]) m4_include([append.at]) m4_include([append01.at]) m4_include([append02.at]) +m4_include([append03.at]) m4_include([xform-h.at]) m4_include([xform01.at]) |