From 27b98aa8ae11908b4e2937833eb82a2fbf9c4f87 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 18 Apr 2005 18:21:50 +0000 Subject: [PATCH] * 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. --- ChangeLog | 11 +++++++++++ src/buffer.c | 27 ++++----------------------- tests/shortrec.at | 39 +++++++++++++++++++++++++++++++++++++++ tests/testsuite.at | 2 ++ 4 files changed, 56 insertions(+), 23 deletions(-) create mode 100644 tests/shortrec.at diff --git a/ChangeLog b/ChangeLog index ca0a12f..60aabcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-04-18 Paul Eggert + + * 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. + + * bootstrap (gnulib_modules): Don't create a file modlist.tmp, as + it is sometimes left behind as a garbage file (maybe due to the + multiple traps?). + 2005-04-14 Sergey Poznyakoff * src/list.c: Handle Solaris 'X' type flag diff --git a/src/buffer.c b/src/buffer.c index ef57a05..93613ee 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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_access) 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_access) { 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) { diff --git a/tests/shortrec.at b/tests/shortrec.at new file mode 100644 index 0000000..09cc530 --- /dev/null +++ b/tests/shortrec.at @@ -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 /dev/null + +rm -r directory +]) + +AT_CLEANUP diff --git a/tests/testsuite.at b/tests/testsuite.at index 29f174f..e260c83 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -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]) -- 2.45.2