[git commit] tar: fix handling of first argument without '-'

Denys Vlasenko vda.linux at googlemail.com
Wed Aug 23 10:19:44 UTC 2017


commit: https://git.busybox.net/busybox/commit/?id=6bafcfb67a30dde668cceeab7669082fbcf5a489
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

The following no longer works as expected:

   $ ./busybox tar xfz test.tgz
   tar: can't open 'z': No such file or directory

Signed-off-by: Ron Yorston <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 archival/tar.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/archival/tar.c b/archival/tar.c
index 9a5bcc7..6cf3508 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -953,9 +953,6 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
 	if (getuid() != 0)
 		tar_handle->ah_flags |= ARCHIVE_DONT_RESTORE_PERM;
 
-	/* Prepend '-' to the first argument if required */
-	if (argv[1] && argv[1][0] != '-' && argv[1][0] != '\0')
-		argv[1] = xasprintf("-%s", argv[1]);
 #if ENABLE_DESKTOP
 	/* Lie to buildroot when it starts asking stupid questions. */
 	if (argv[1] && strcmp(argv[1], "--version") == 0) {
@@ -992,6 +989,9 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
 		}
 	}
 #endif
+	/* Prepend '-' to the first argument if required */
+	if (argv[1] && argv[1][0] != '-' && argv[1][0] != '\0')
+		argv[1] = xasprintf("-%s", argv[1]);
 	opt = GETOPT32(argv, "^"
 		"txC:f:Oopvk"
 		IF_FEATURE_TAR_CREATE(   "ch"    )


More information about the busybox-cvs mailing list