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 | |
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.
-rw-r--r-- | applets/usage.c | 2 | ||||
-rw-r--r-- | ar.c | 26 | ||||
-rw-r--r-- | archival/ar.c | 26 | ||||
-rw-r--r-- | usage.c | 2 |
4 files changed, 26 insertions, 30 deletions
diff --git a/applets/usage.c b/applets/usage.c index b23f27141..b01c11ef2 100644 --- a/applets/usage.c +++ b/applets/usage.c @@ -2,7 +2,7 @@ #if defined BB_AR const char ar_usage[] = - "ar [[-ov] -tpv archive] filenames \n" + "ar -ovtpv archive filenames \n" #ifndef BB_FEATURE_TRIVIAL_HELP "\nExtract or list files from an ar archive.\n\n" "Options:\n" @@ -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)); 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)); @@ -2,7 +2,7 @@ #if defined BB_AR const char ar_usage[] = - "ar [[-ov] -tpv archive] filenames \n" + "ar -ovtpv archive filenames \n" #ifndef BB_FEATURE_TRIVIAL_HELP "\nExtract or list files from an ar archive.\n\n" "Options:\n" |