]> Dogcows Code - chaz/tar/commitdiff
Transform file names when updating and appendig to archives.
authorSergey Poznyakoff <gray@gnu.org.ua>
Wed, 27 Oct 2010 11:07:46 +0000 (14:07 +0300)
committerSergey Poznyakoff <gray@gnu.org.ua>
Wed, 27 Oct 2010 11:07:46 +0000 (14:07 +0300)
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

src/common.h
src/list.c
src/update.c
tests/Makefile.am
tests/append03.at [new file with mode: 0644]
tests/testsuite.at

index 192cf9e5b64a77c0a7857b0a85f4b3f222187b9d..4a638240c5f5cb93c064bd1dfbd8700c23253718 100644 (file)
@@ -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))
index e1e06caa9e25ef3e173d7c30504beb2bfcc69623..c65e171976ecf86b66a73cf386e271a327725216 100644 (file)
@@ -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)
index 69fa5924b1b64e921e69492333142959926ff39b..e3228d425f51d90d5a841e9aefa984cec1a69a30 100644 (file)
@@ -130,6 +130,8 @@ update_archive (void)
 
            decode_header (current_header, &current_stat_info,
                           &current_format, 0);
+           transform_stat_info (current_header->header.typeflag,
+                                &current_stat_info);
            archive_format = current_format;
 
            if (subcommand_option == UPDATE_SUBCOMMAND
index dd375f3072b789ccc8d8f2c64d7e711d7080bd2b..12e8c1b2007526f0ecd3b0d6e80fd141adebaf97 100644 (file)
@@ -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 (file)
index 0000000..8fb24c6
--- /dev/null
@@ -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
index 9aaafff1505fe29bec0a2ae08affd5f470649bec..d18b16e58e3ec2bc4d63c5466e649ab0d6cca2a4 100644 (file)
@@ -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])
This page took 0.030729 seconds and 4 git commands to generate.