From: Sergey Poznyakoff Date: Wed, 22 Oct 2008 20:55:35 +0000 (+0000) Subject: * src/buffer.c (short_read): Remove !read_full_records condition, X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=5354888e400e0565e85ac29e4826c0f7840cab45;p=chaz%2Ftar * 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. --- diff --git a/ChangeLog b/ChangeLog index 4e74e8c..2d54b2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-10-19 Sergey Poznyakoff + + * 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 * src/common.h (transform_symlinks_option): New global. diff --git a/NEWS b/NEWS index a55eb34..b87d017 100644 --- a/NEWS +++ b/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 @@ -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. diff --git a/THANKS b/THANKS index 986b1af..dbb64d2 100644 --- a/THANKS +++ b/THANKS @@ -147,6 +147,7 @@ Drew Sullivan drew@sni.ca Drew Trieger trieger@woodstock.abbott.com Dunstan Vavasour dev@cegelecproj.co.uk Ed Childs echilds@bgs.com +Ed Leaver ewleaver@comcast.net Edgar Taube et@immd8.informatik.uni-erlangen.de Eduardo Kortright eduardo@cs.ua.edu Eduardo V. de Rivas eddie@asterion.com diff --git a/src/buffer.c b/src/buffer.c index 79bb7d6..59d4e4f 100644 --- a/src/buffer.c +++ b/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) diff --git a/tests/sparsemv.at b/tests/sparsemv.at index a0d375e..81da613 100644 --- a/tests/sparsemv.at +++ b/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 diff --git a/tests/sparsemvp.at b/tests/sparsemvp.at index 2674813..2edd823 100644 --- a/tests/sparsemvp.at +++ b/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])]) diff --git a/tests/volsize.at b/tests/volsize.at index 3408f81..b8624a0 100644 --- a/tests/volsize.at +++ b/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