summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2008-10-22 20:55:35 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2008-10-22 20:55:35 +0000
commit5354888e400e0565e85ac29e4826c0f7840cab45 (patch)
tree81b1a2a7762a5dedb067c65df387a708375780a6
parent57bfbbde90dfcc18ee6b1e27c01ba915ecc56312 (diff)
downloadtar-5354888e400e0565e85ac29e4826c0f7840cab45.tar.gz
* 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.
-rw-r--r--ChangeLog12
-rw-r--r--NEWS6
-rw-r--r--THANKS1
-rw-r--r--src/buffer.c5
-rw-r--r--tests/sparsemv.at10
-rw-r--r--tests/sparsemvp.at6
-rw-r--r--tests/volsize.at5
7 files changed, 35 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 4e74e8c0..2d54b2a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-10-19 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * 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 <gray@gnu.org.ua>
* src/common.h (transform_symlinks_option): New global.
diff --git a/NEWS b/NEWS
index a55eb340..b87d017e 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 <bug-tar@gnu.org>
@@ -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 986b1af7..dbb64d25 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 79bb7d6f..59d4e4f0 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 a0d375e8..81da6130 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 26748135..2edd8233 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 3408f816..b8624a04 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