[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-tar] Re: Warning message when reading partial blocks from stdin.
From: |
Paul Eggert |
Subject: |
[Bug-tar] Re: Warning message when reading partial blocks from stdin. |
Date: |
Mon, 18 Apr 2005 11:23:47 -0700 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) |
Laurence Bond <address@hidden> writes:
> Log on to a Solaris 9 machine.
>
> cd /usr/bin
>
> Using Solaris tar create a compressed tar file.
> /usr/bin/tar cf - . | gzip -7 > ~/something.tar.gz
>
> Using GNU tar 1.15.1 (I checked this on both AIX and Solaris)
> gzip -d -c ~/something.tar.gz | gtar1-15.1 tvf - > /dev/null
>
> This generated the message:
> Read 8192 bytes from -
Thanks for the details. I reproduced the problem, and installed
this patch into the CVS version of GNU tar. As it happens, the
problem is independent of gzip; it can be reproduced even with
an uncompressed archive.
2005-04-18 Paul Eggert <address@hidden>
* src/buffer.c (reading_from_pipe): Remove. All uses removed.
(short_read): Don't warn about short reads; they're normal.
* tests/shortrec.at: New file.
* tests/testsuite.at: Include it.
--- src/buffer.c 7 Apr 2005 17:26:11 -0000 1.82
+++ src/buffer.c 18 Apr 2005 18:19:03 -0000
@@ -73,7 +73,6 @@ static bool hit_eof;
static int checkpoint;
static bool read_full_records = false;
-static bool reading_from_pipe = false;
/* We're reading, but we just read the last block and it's time to update.
Declared in update.c
@@ -182,21 +181,17 @@ enum compress_type
check_compressed_archive ()
{
struct zip_magic const *p;
- bool sfr, srp;
+ bool sfr;
/* Prepare global data needed for find_next_block: */
record_end = record_start; /* set up for 1st record = # 0 */
sfr = read_full_records;
read_full_records = true; /* Suppress fatal error on reading a partial
record */
- srp = reading_from_pipe;
- reading_from_pipe = true; /* Suppress warning message on reading a partial
- record */
find_next_block ();
/* Restore global values */
read_full_records = sfr;
- reading_from_pipe = srp;
if (tar_checksum (record_start, true) == HEADER_SUCCESS)
/* Probably a valid header */
@@ -236,7 +231,7 @@ open_compressed_archive ()
/* Open compressed archive */
use_compress_program_option = compress_program (type);
child_pid = sys_child_open_for_uncompress ();
- read_full_records = reading_from_pipe = true;
+ read_full_records = true;
}
records_read = 0;
@@ -406,7 +401,6 @@ open_archive (enum access_mode wanted_ac
access_mode = wanted_access == ACCESS_UPDATE ? ACCESS_READ : wanted_access;
read_full_records = read_full_records_option;
- reading_from_pipe = false;
records_read = 0;
@@ -416,7 +410,7 @@ open_archive (enum access_mode wanted_ac
{
case ACCESS_READ:
child_pid = sys_child_open_for_uncompress ();
- read_full_records = reading_from_pipe = true;
+ read_full_records = true;
record_end = record_start; /* set up for 1st record = # 0 */
break;
@@ -760,20 +754,7 @@ short_read (size_t status)
archive_read_error ();
if (status == 0)
- {
- if (!reading_from_pipe)
- {
- char buf[UINTMAX_STRSIZE_BOUND];
-
- WARN((0, 0,
- ngettext ("Read %s byte from %s",
- "Read %s bytes from %s",
- record_size - left),
- STRINGIFY_BIGINT (record_size - left, buf),
- *archive_name_cursor));
- }
- break;
- }
+ break;
if (! read_full_records)
{
--- tests/testsuite.at 7 Apr 2005 17:29:07 -0000 1.9
+++ tests/testsuite.at 18 Apr 2005 18:19:03 -0000
@@ -106,6 +106,8 @@ m4_include([recurse.at])
m4_include([same-order01.at])
m4_include([same-order02.at])
+m4_include([shortrec.at])
+
m4_include([sparse01.at])
m4_include([sparse02.at])
--- /dev/null 2003-03-18 13:55:57 -0800
+++ tests/shortrec.at 2005-04-18 10:43:16 -0700
@@ -0,0 +1,39 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2005 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 2, 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# Check that tar doesn't complain when reading short records.
+# This can happen when the input blocksize differs from the blocksize
+# used to create the archive.
+
+AT_SETUP([short records])
+AT_KEYWORDS([shortrec.at])
+
+AT_TAR_CHECK([
+mkdir directory
+(cd directory && touch a b c d e f g h i j k l m n o p q r)
+tar -c -b 1 directory | tar -t >/dev/null
+tar -c -b 1 -f archive directory
+tar -t -f archive >/dev/null
+tar -t <archive >/dev/null
+
+rm -r directory
+])
+
+AT_CLEANUP
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., (continued)
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Gunnar Ritter, 2005/04/19
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Paul Eggert, 2005/04/19
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Gunnar Ritter, 2005/04/19
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Paul Eggert, 2005/04/20
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Joerg Schilling, 2005/04/20
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Gunnar Ritter, 2005/04/20
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Gunnar Ritter, 2005/04/20
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Joerg Schilling, 2005/04/22
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Gunnar Ritter, 2005/04/22
- Message not available
- Re: [Bug-tar] Warning message when reading partial blocks from stdin., Paul Eggert, 2005/04/18
- Message not available
- [Bug-tar] Re: Warning message when reading partial blocks from stdin.,
Paul Eggert <=
- Re: [Bug-tar] Re: Warning message when reading partial blocks from stdin., Sergey Poznyakoff, 2005/04/19