From 437bf72785cdd8c9d689c241a94c79f1f71a2354 Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Sat, 9 Sep 2000 13:38:26 +0000 Subject: 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. --- applets/usage.c | 2 +- ar.c | 26 ++++++++++++-------------- archival/ar.c | 26 ++++++++++++-------------- usage.c | 2 +- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/applets/usage.c b/applets/usage.c index b23f271..b01c11e 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" diff --git a/ar.c b/ar.c index eaa15a5..41750ac 100644 --- a/ar.c +++ b/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)); 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)); diff --git a/usage.c b/usage.c index b23f271..b01c11e 100644 --- a/usage.c +++ b/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" -- cgit v1.1