Parcourir la source

* src/buffer.c (short_read): Remove !read_full_records condition,
which was always false on a first record and thus disabled record
size autodetection. Thanks Ed Leaver for the patch.
(_gnu_flush_read): Handle blocking_factor == 1.
* tests/sparsemv.at: Reflect changes to buffer.c.
* tests/sparsemvp.at: Likewise.
* tests/volsize.at: Likewise.
* NEWS: Update.
* THANKS: Add Ed Leaver.

Sergey Poznyakoff il y a 16 ans
Parent
commit
5354888e40
7 fichiers modifiés avec 35 ajouts et 10 suppressions
  1. 12 0
      ChangeLog
  2. 5 1
      NEWS
  3. 1 0
      THANKS
  4. 4 1
      src/buffer.c
  5. 5 5
      tests/sparsemv.at
  6. 4 2
      tests/sparsemvp.at
  7. 4 1
      tests/volsize.at

+ 12 - 0
ChangeLog

@@ -1,3 +1,15 @@
+2008-10-19  Sergey Poznyakoff  <[email protected]>
+
+	* THANKS: Add Ed Leaver.
+	* src/buffer.c (short_read): Remove !read_full_records condition,
+	which was always false on a first record and thus disabled record
+	size autodetection.  Thanks Ed Leaver for the patch.
+	(_gnu_flush_read): Handle blocking_factor == 1.
+	* tests/sparsemv.at: Reflect changes to buffer.c.
+	* tests/sparsemvp.at: Likewise.
+	* tests/volsize.at: Likewise.
+	* NEWS: Update.
+	
 2008-10-16  Sergey Poznyakoff  <[email protected]>
 
 	* src/common.h (transform_symlinks_option): New global.

+ 5 - 1
NEWS

@@ -1,4 +1,4 @@
-GNU tar NEWS - User visible changes. 2008-10-16
+GNU tar NEWS - User visible changes. 2008-10-22
 Please send GNU tar bug reports to <[email protected]>
 
 
@@ -42,6 +42,10 @@ prior --transform-symlink.
 
 ** The --null option disabled handling of tar options in list files.  This
 is fixed.
+** Fixed record size autodetection.  If the detected record size differs from
+the expected value (either default, or set on the command line), tar
+always prints a warning if verbosity level is set to 1 or greater,
+i.e. if either -t or -v option is given.
 
 
 

+ 1 - 0
THANKS

@@ -147,6 +147,7 @@ Drew Sullivan		[email protected]
 Drew Trieger		[email protected]
 Dunstan Vavasour	[email protected]
 Ed Childs		[email protected]
+Ed Leaver		[email protected]
 Edgar Taube		[email protected]
 Eduardo Kortright	[email protected]
 Eduardo V. de Rivas	[email protected]

+ 4 - 1
src/buffer.c

@@ -687,7 +687,7 @@ short_read (size_t status)
   left = record_size - status;
 
   if (left && left % BLOCKSIZE == 0
-      && !read_full_records && verbose_option > 1
+      && verbose_option
       && record_start_block == 0 && status != 0)
     {
       unsigned long rsize = status / BLOCKSIZE;
@@ -1567,6 +1567,9 @@ _gnu_flush_read (void)
         {
           while (!try_new_volume ())
             ;
+	  if (current_block == record_end)
+	    /* Necessary for blocking_factor == 1 */
+	    flush_archive();
           return;
         }
       else if (status == SAFE_READ_ERROR)

+ 5 - 5
tests/sparsemv.at

@@ -1,7 +1,7 @@
 # Process this file with autom4te to create testsuite. -*- Autotest -*-
 
 # Test suite for GNU tar.
-# Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2007, 2008 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
@@ -35,18 +35,18 @@ echo "Pass 1: Split between data blocks"
 echo "Create archive"
 tar --sparse -c --record-size=512 -M -L6 -f arc.1 -f arc.2 sparsefile || exit 1
 echo "Test archive"
-tar -t -M -f arc.1 -f arc.2 
+tar --record-size=512 -t -M -f arc.1 -f arc.2 
 echo "Compare archive"
-tar -d -M -f arc.1 -f arc.2
+tar --record-size=512 -d -M -f arc.1 -f arc.2
 
 echo "Pass 2: Split within a data block"
 genfile --sparse --file sparsefile 0 ABCDEFGHIJ 1M ABCDEFGHI || AT_SKIP_TEST
 echo "Create archive"
 tar --sparse -c --record-size=512 -M -L6 -f arc.1 -f arc.2 sparsefile || exit 1
 echo "Test archive"
-tar -t -M -f arc.1 -f arc.2 
+tar --record-size=512 -t -M -f arc.1 -f arc.2 
 echo "Compare archive"
-tar -d -M -f arc.1 -f arc.2
+tar --record-size=512 -d -M -f arc.1 -f arc.2
 ],
 [0],
 [Pass 1: Split between data blocks

+ 4 - 2
tests/sparsemvp.at

@@ -1,7 +1,7 @@
 # Process this file with autom4te to create testsuite. -*- Autotest -*-
 
 # Test suite for GNU tar.
-# Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2007, 2008 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
@@ -56,5 +56,7 @@ Test archive
 sparsefile
 Compare archive
 ],
-[],[],[],[pax])])
+[tar: Record size = 12 blocks
+tar: Record size = 12 blocks
+],[],[],[pax])])
 

+ 4 - 1
tests/volsize.at

@@ -1,7 +1,7 @@
 # Process this file with autom4te to create testsuite. -*- Autotest -*-
 
 # Test suite for GNU tar.
-# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2007, 2008 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
@@ -51,6 +51,9 @@ V--------- 0/0            1536 2006-05-08 22:07 abc/not-a-file.gif--Volume Heade
 Extracted directory
 abc
 abc/CCC
+],
+[tar: Record size = 5 blocks
+tar: Record size = 5 blocks
 ])
 
 AT_CLEANUP