aboutsummaryrefslogtreecommitdiff
path: root/gzip.c
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-04-18 16:05:34 +0000
committerMatt Kraai <kraai@debian.org>2001-04-18 16:05:34 +0000
commit53265546a69d5810d5e19b22d6a5095f04eca6be (patch)
tree6a920a60f2efdfbf4c34bea6542568d18aee9471 /gzip.c
parent96dcd19b8a8e9d6fc8c17c20c42d32665b68c141 (diff)
downloadbusybox-53265546a69d5810d5e19b22d6a5095f04eca6be.tar.gz
Eliminate spurious warning, convert to getopt, and eliminate redundant check.
Diffstat (limited to 'gzip.c')
-rw-r--r--gzip.c48
1 files changed, 20 insertions, 28 deletions
diff --git a/gzip.c b/gzip.c
index ac503444e..f05ef95d0 100644
--- a/gzip.c
+++ b/gzip.c
@@ -1900,42 +1900,36 @@ int gzip_main(int argc, char **argv)
int tostdout = 0;
int fromstdin = 0;
int force = 0;
+ int opt;
- /* Parse any options */
- while (--argc > 0 && **(++argv) == '-') {
- if (*((*argv) + 1) == '\0') {
+ while ((opt = getopt(argc, argv, "cf123456789d")) != -1) {
+ switch (opt) {
+ case 'c':
tostdout = 1;
- }
- while (*(++(*argv))) {
- switch (**argv) {
- case 'c':
- tostdout = 1;
- break;
- case 'f':
- force = 1;
- break;
- /* Ignore 1-9 (compression level) options */
- case '1': case '2': case '3': case '4': case '5':
- case '6': case '7': case '8': case '9':
- break;
+ break;
+ case 'f':
+ force = 1;
+ break;
+ /* Ignore 1-9 (compression level) options */
+ case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ break;
#ifdef BB_GUNZIP
- case 'd':
- exit(gunzip_main(argc, argv));
+ case 'd':
+ optind = 1;
+ return gunzip_main(argc, argv);
#endif
- default:
- show_usage();
- }
+ default:
+ show_usage();
}
}
- if (argc <= 0 ) {
+ if (optind == argc) {
fromstdin = 1;
tostdout = 1;
}
- if (isatty(fileno(stdin)) && fromstdin==1 && force==0)
- error_msg_and_die( "data not read from terminal. Use -f to force it.");
if (isatty(fileno(stdout)) && tostdout==1 && force==0)
- error_msg_and_die( "data not written to terminal. Use -f to force it.");
+ error_msg_and_die( "compressed data not written to terminal. Use -f to force it.");
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
if (foreground) {
@@ -1975,9 +1969,7 @@ int gzip_main(int argc, char **argv)
ifile_size = -1L; /* convention for unknown size */
} else {
/* Open up the input file */
- if (argc <= 0)
- show_usage();
- strncpy(ifname, *argv, MAX_PATH_LEN);
+ strncpy(ifname, argv[optind], MAX_PATH_LEN);
/* Open input file */
inFileNum = open(ifname, O_RDONLY);