summaryrefslogtreecommitdiff
path: root/archival
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 /archival
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 'archival')
-rw-r--r--archival/ar.c26
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));