summaryrefslogtreecommitdiff
path: root/ar.c
diff options
context:
space:
mode:
authorGlenn L McGrath2000-09-09 13:38:26 +0000
committerGlenn L McGrath2000-09-09 13:38:26 +0000
commit437bf72785cdd8c9d689c241a94c79f1f71a2354 (patch)
treec9551952cd7d6fe255a6e7f93c3107843eda1130 /ar.c
parent6fb88e73f792ad6dfb1c2c08600972988f223012 (diff)
downloadbusybox-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 'ar.c')
-rw-r--r--ar.c26
1 files changed, 12 insertions, 14 deletions
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));