Revert "Fix savannah bug #63567"

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.
This commit is contained in:
Sergey Poznyakoff
2023-08-11 21:35:30 +03:00
parent 8e5483577d
commit d437ecf75d
3 changed files with 11 additions and 4 deletions

View File

@@ -4215,6 +4215,11 @@ Total bytes read: 7924664320 (7.4GiB, 95MiB/s)
@end group
@end smallexample
Notice, that since @command{tar} operates on @dfn{records}, the number
of bytes reported can be rounded up to the nearest full record. This
can happen, in particular, when the last record in the archive is
partial. @xref{Blocking}.
Finally, when deleting from an archive, the @option{--totals} option
displays both numbers plus number of bytes removed from the archive:

View File

@@ -987,7 +987,6 @@ short_read (size_t status)
}
record_end = record_start + (record_size - left) / BLOCKSIZE;
if (left == 0)
records_read++;
}

View File

@@ -36,7 +36,10 @@ esac
dd if=archive.tar of=trunc.tar bs=$size count=1 2>/dev/null
tar --delete 'b/' -f trunc.tar
],
[0],
[],[],[],[],[gnu, pax])
[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