Commit e89c7a45eb broke deletion from archives. The reported number
of bytes read is rounded to the nearest record anyway, revert the
commit and document the fact.
Reported by Ed Santiago. See
https://bugzilla.redhat.com/show_bug.cgi?id=2230127
* doc/tar.texi: Document the fact that --totals rounds up the
number of bytes reads to the nearest record.
* src/buffer.c: Revert changes.
* tests/delete06.at: Fix expected status code and stderr.
46 lines
1.4 KiB
Plaintext
46 lines
1.4 KiB
Plaintext
# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
|
|
|
# Test suite for GNU tar.
|
|
# Copyright 2023 Free Software Foundation, Inc.
|
|
|
|
# This file is part of GNU tar.
|
|
|
|
# GNU tar 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 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# GNU tar 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, see <http://www.gnu.org/licenses/>.
|
|
|
|
# When deleting last partially written member from a truncated archive
|
|
# tar 1.34 would miss EOF and spin in a dead loop in delete.c:flush_file.
|
|
# References: https://savannah.gnu.org/bugs/?63823
|
|
|
|
AT_SETUP([EOF detection])
|
|
AT_KEYWORDS([delete delete06])
|
|
|
|
AT_TAR_CHECK([
|
|
mkdir b
|
|
touch a b/1 c
|
|
tar -cf archive.tar a b/1 c
|
|
case $TEST_TAR_FORMAT in
|
|
gnu) size=1500;;
|
|
pax) size=3072;;
|
|
esac
|
|
dd if=archive.tar of=trunc.tar bs=$size count=1 2>/dev/null
|
|
tar --delete 'b/' -f trunc.tar
|
|
],
|
|
[2],
|
|
[],
|
|
[tar: lseek: trunc.tar: Value too large for defined data type
|
|
tar: Exiting with failure status due to previous errors
|
|
],[],[],[gnu, pax])
|
|
|
|
AT_CLEANUP
|