]> Dogcows Code - chaz/tar/commitdiff
(decode_options): Ignore --seek if used with --delete.
authorSergey Poznyakoff <gray@gnu.org.ua>
Sat, 18 Dec 2004 20:07:04 +0000 (20:07 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Sat, 18 Dec 2004 20:07:04 +0000 (20:07 +0000)
Delete.c is based on the assumption that the archive is being
actually read, not lseeked.

src/tar.c

index 56a8e730656f75b5355741e9b381e653980ceb72..31d7d3064b37e0a3c10541b2ef9a304ab4306cbc 100644 (file)
--- a/src/tar.c
+++ b/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
This page took 0.026819 seconds and 4 git commands to generate.