Преглед изворни кода

Fix interacton of --verbose and --append.

* src/buffer.c (_open_archive): don't overwrite existing archive
if given the --verify option.
* tests/append04.at: New file.
* tests/Makefile.am: Add new testcase.
* tests/testsuite.at: Add new testcase.
* THANKS: Update.
Sergey Poznyakoff пре 11 година
родитељ
комит
47560a0498
5 измењених фајлова са 69 додато и 5 уклоњено
  1. 1 0
      THANKS
  2. 6 5
      src/buffer.c
  3. 1 0
      tests/Makefile.am
  4. 60 0
      tests/append04.at
  5. 1 0
      tests/testsuite.at

+ 1 - 0
THANKS

@@ -242,6 +242,7 @@ Jim Clausing		[email protected]
 Jim Farrell		[email protected]
 Jim Meyering		[email protected]
 Jim Murray		[email protected]
+Jivko Angelov		[email protected]
 Joachim Holzfuss	[email protected]
 Joachim Seelig		[email protected]
 Joe DeBattista		[email protected]

+ 6 - 5
src/buffer.c

@@ -722,9 +722,6 @@ _open_archive (enum access_mode wanted_access)
           break;
         }
     }
-  else if (verify_option)
-    archive = rmtopen (archive_name_array[0], O_RDWR | O_CREAT | O_BINARY,
-                       MODE_RW, rsh_command_option);
   else
     switch (wanted_access)
       {
@@ -740,8 +737,12 @@ _open_archive (enum access_mode wanted_access)
             maybe_backup_file (archive_name_array[0], 1);
             backed_up_flag = 1;
           }
-        archive = rmtcreat (archive_name_array[0], MODE_RW,
-                            rsh_command_option);
+	if (verify_option)
+	  archive = rmtopen (archive_name_array[0], O_RDWR | O_CREAT | O_BINARY,
+			     MODE_RW, rsh_command_option);
+	else
+	  archive = rmtcreat (archive_name_array[0], MODE_RW,
+			      rsh_command_option);
         break;
 
       case ACCESS_UPDATE:

+ 1 - 0
tests/Makefile.am

@@ -51,6 +51,7 @@ TESTSUITE_AT = \
  append01.at\
  append02.at\
  append03.at\
+ append04.at\
  backup01.at\
  chtype.at\
  comprec.at\

+ 60 - 0
tests/append04.at

@@ -0,0 +1,60 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+#
+# Test suite for GNU tar.
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU tar.
+#
+# 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/>.
+
+# When called with --append and --verify options, tar would rewrite the
+# archive instead of appending to it.
+#
+# Last-Affected-Version: 1.26
+# Reported-by: Jivko Angelov <[email protected]>
+# References: <[email protected]>,
+#             http://lists.gnu.org/archive/html/bug-tar/2013-07/msg00003.html
+
+AT_SETUP([append with verify])
+AT_KEYWORDS([append append04 verify append-verify])
+
+AT_TAR_CHECK([
+# Create two empty files:
+touch file1 file2
+
+# Create an archive:
+tar cpfW archive.tar file1 file2
+
+# Verify created archive by listing its content:
+tar -tf archive.tar
+echo ==
+# Create another empty file:
+touch file3
+
+# Append it to the already created archive:
+tar rpfW archive.tar file3
+
+# Verify content of the new archive:
+tar -tf archive.tar
+],
+[0],
+[file1
+file2
+==
+file1
+file2
+file3
+])
+
+AT_CLEANUP

+ 1 - 0
tests/testsuite.at

@@ -218,6 +218,7 @@ m4_include([append.at])
 m4_include([append01.at])
 m4_include([append02.at])
 m4_include([append03.at])
+m4_include([append04.at])
 
 AT_BANNER([Transforms])
 m4_include([xform-h.at])