diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2000-09-09 13:38:26 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2000-09-09 13:38:26 +0000 |
commit | 437bf72785cdd8c9d689c241a94c79f1f71a2354 (patch) | |
tree | c9551952cd7d6fe255a6e7f93c3107843eda1130 /archival | |
parent | 6fb88e73f792ad6dfb1c2c08600972988f223012 (diff) | |
download | 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 eaa15a516..41750ac7c 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)); |