diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-09-23 22:36:24 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-09-23 22:36:24 +0000 |
commit | 0102a9fd48fe9ed16a1e2ad372cfa0fb65e87208 (patch) | |
tree | 5f6b62f627ebb6971d30363bbfb926fc9e0beb8d | |
parent | 2da90d3b58472a4df63796ea679fde1f7d2b7a78 (diff) | |
download | busybox-w32-0102a9fd48fe9ed16a1e2ad372cfa0fb65e87208.tar.gz busybox-w32-0102a9fd48fe9ed16a1e2ad372cfa0fb65e87208.tar.bz2 busybox-w32-0102a9fd48fe9ed16a1e2ad372cfa0fb65e87208.zip |
Fix an obscure option parsing bug.
-rw-r--r-- | archival/tar.c | 5 | ||||
-rw-r--r-- | tar.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/archival/tar.c b/archival/tar.c index ade77a59d..6dcda53ef 100644 --- a/archival/tar.c +++ b/archival/tar.c | |||
@@ -149,6 +149,7 @@ extern int tar_main(int argc, char **argv) | |||
149 | int createFlag = FALSE; | 149 | int createFlag = FALSE; |
150 | int verboseFlag = FALSE; | 150 | int verboseFlag = FALSE; |
151 | int tostdoutFlag = FALSE; | 151 | int tostdoutFlag = FALSE; |
152 | int firstOpt = TRUE; | ||
152 | int stopIt; | 153 | int stopIt; |
153 | 154 | ||
154 | 155 | ||
@@ -156,7 +157,9 @@ extern int tar_main(int argc, char **argv) | |||
156 | usage(tar_usage); | 157 | usage(tar_usage); |
157 | 158 | ||
158 | /* do normal option parsing */ | 159 | /* do normal option parsing */ |
159 | while (--argc > 0 && strspn(*(++argv), "-cxt") >0 ) { | 160 | while (--argc > 0 && ((*argv && **(++argv) == '-') || |
161 | (firstOpt==TRUE && strspn(*argv, "-cxt") ))) { | ||
162 | firstOpt=FALSE; | ||
160 | stopIt=FALSE; | 163 | stopIt=FALSE; |
161 | while (stopIt==FALSE && *argv && **argv) { | 164 | while (stopIt==FALSE && *argv && **argv) { |
162 | switch (**argv) { | 165 | switch (**argv) { |
@@ -149,6 +149,7 @@ extern int tar_main(int argc, char **argv) | |||
149 | int createFlag = FALSE; | 149 | int createFlag = FALSE; |
150 | int verboseFlag = FALSE; | 150 | int verboseFlag = FALSE; |
151 | int tostdoutFlag = FALSE; | 151 | int tostdoutFlag = FALSE; |
152 | int firstOpt = TRUE; | ||
152 | int stopIt; | 153 | int stopIt; |
153 | 154 | ||
154 | 155 | ||
@@ -156,7 +157,9 @@ extern int tar_main(int argc, char **argv) | |||
156 | usage(tar_usage); | 157 | usage(tar_usage); |
157 | 158 | ||
158 | /* do normal option parsing */ | 159 | /* do normal option parsing */ |
159 | while (--argc > 0 && strspn(*(++argv), "-cxt") >0 ) { | 160 | while (--argc > 0 && ((*argv && **(++argv) == '-') || |
161 | (firstOpt==TRUE && strspn(*argv, "-cxt") ))) { | ||
162 | firstOpt=FALSE; | ||
160 | stopIt=FALSE; | 163 | stopIt=FALSE; |
161 | while (stopIt==FALSE && *argv && **argv) { | 164 | while (stopIt==FALSE && *argv && **argv) { |
162 | switch (**argv) { | 165 | switch (**argv) { |