diff options
author | Glenn L McGrath | 2000-09-09 13:38:26 +0000 |
---|---|---|
committer | Glenn L McGrath | 2000-09-09 13:38:26 +0000 |
commit | 437bf72785cdd8c9d689c241a94c79f1f71a2354 (patch) | |
tree | c9551952cd7d6fe255a6e7f93c3107843eda1130 /archival | |
parent | 6fb88e73f792ad6dfb1c2c08600972988f223012 (diff) | |
download | busybox-437bf72785cdd8c9d689c241a94c79f1f71a2354.zip busybox-437bf72785cdd8c9d689c241a94c79f1f71a2354.tar.gz |
Changed getopt so that options can be grouped together, the source
archive is now assumed to be the first non parameter.
This is how GNU ar behaves.
Diffstat (limited to 'archival')
-rw-r--r-- | archival/ar.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/archival/ar.c b/archival/ar.c index eaa15a5..41750ac 100644 --- a/archival/ar.c +++ b/archival/ar.c @@ -239,7 +239,7 @@ extern int ar_main(int argc, char **argv) int srcFd=0, dstFd=0; headerL_t *header, *entry, *extractList; - while ((opt = getopt(argc, argv, "ovt:p:x:")) != -1) { + while ((opt = getopt(argc, argv, "ovtpx")) != -1) { switch (opt) { case 'o': funct = funct | PRESERVE_DATE; @@ -249,31 +249,29 @@ extern int ar_main(int argc, char **argv) break; case 't': funct = funct | DISPLAY; + break; case 'x': - if (opt=='x') { - funct = funct | EXT_TO_FILE; - } + funct = funct | EXT_TO_FILE; + break; case 'p': - if (opt=='p') { - funct = funct | EXT_TO_STDOUT; - } - /* following is common to 't','x' and 'p' */ - if ( (srcFd = open(optarg, O_RDONLY)) < 0) { - errorMsg("Cannot read %s\n", optarg); - return (FALSE); - } + funct = funct | EXT_TO_STDOUT; break; default: usage(ar_usage); } } - /* check options not just preserve_dates and/or verbose */ - if (funct < 4) { + /* check the src filename was specified */ + if (optind == argc) { usage(ar_usage); return(FALSE); } + if ( (srcFd = open(argv[optind], O_RDONLY)) < 0) { + errorMsg("Cannot read %s\n", optarg); + return (FALSE); + } + optind++; entry = (headerL_t *) malloc(sizeof(headerL_t)); header = (headerL_t *) malloc(sizeof(headerL_t)); extractList = (headerL_t *) malloc(sizeof(headerL_t)); |