(decode_options): Ignore --seek if used with --delete.
Delete.c is based on the assumption that the archive is being actually read, not lseeked.
This commit is contained in:
12
src/tar.c
12
src/tar.c
@@ -1464,6 +1464,18 @@ decode_options (int argc, char **argv)
|
||||
_("--occurrence cannot be used in the requested operation mode")));
|
||||
}
|
||||
|
||||
if (seekable_archive && subcommand_option == DELETE_SUBCOMMAND)
|
||||
{
|
||||
/* The current code in delete.c is based on the assumption that
|
||||
skip_member() reads all data from the archive. So, we should
|
||||
make sure it won't use seeks. On the other hand, the same code
|
||||
depends on the ability to backspace a record in the archive,
|
||||
so setting seekable_archive to false is technically incorrect.
|
||||
However, it is tested only in skip_member(), so it's not a
|
||||
problem. */
|
||||
seekable_archive = false;
|
||||
}
|
||||
|
||||
if (archive_names == 0)
|
||||
{
|
||||
/* If no archive file name given, try TAPE from the environment, or
|
||||
|
||||
Reference in New Issue
Block a user