svn commit: trunk/busybox/archival

vda at busybox.net vda at busybox.net
Fri Sep 22 15:13:39 UTC 2006


Author: vda
Date: 2006-09-22 08:13:38 -0700 (Fri, 22 Sep 2006)
New Revision: 16187

Log:
gzip: getopt_ulflags'isation


Modified:
   trunk/busybox/archival/gzip.c


Changeset:
Modified: trunk/busybox/archival/gzip.c
===================================================================
--- trunk/busybox/archival/gzip.c	2006-09-22 14:53:41 UTC (rev 16186)
+++ trunk/busybox/archival/gzip.c	2006-09-22 15:13:38 UTC (rev 16187)
@@ -1122,44 +1122,36 @@
 /* ======================================================================== */
 int gzip_main(int argc, char **argv)
 {
+	enum {
+		OPT_tostdout = 0x1,
+		OPT_force = 0x2,
+	};
+
+	unsigned long opt;
 	int result;
 	int inFileNum;
 	int outFileNum;
 	struct stat statBuf;
 	char *delFileName;
-	int tostdout = 0;
-	int force = 0;
-	int opt;
 
-	while ((opt = getopt(argc, argv, "cf123456789dq")) != -1) {
-		switch (opt) {
-		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;
-		case 'q':
-			break;
-#ifdef CONFIG_GUNZIP
-		case 'd':
-			optind = 1;
-			return gunzip_main(argc, argv);
-#endif
-		default:
-			bb_show_usage();
-		}
+	opt = bb_getopt_ulflags(argc, argv, "cf123456789q" USE_GUNZIP("d"));
+	//if (opt & 0x1) // -c
+	//if (opt & 0x2) // -f
+	/* Ignore 1-9 (compression level) options */
+	//if (opt & 0x4) // -1
+	//if (opt & 0x8) // -2
+	//if (opt & 0x10) // -3
+	//if (opt & 0x20) // -4
+	//if (opt & 0x40) // -5
+	//if (opt & 0x80) // -6
+	//if (opt & 0x100) // -7
+	//if (opt & 0x200) // -8
+	//if (opt & 0x400) // -9
+	//if (opt & 0x800) // -q
+	if (ENABLE_GUNZIP && (opt & 0x1000)) { // -d
+		/* FIXME: bb_getopt_ulflags should not depend on optind */
+		optind = 1;
+		return gunzip_main(argc, argv);
 	}
 
 	foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
@@ -1211,7 +1203,7 @@
 					bb_perror_msg_and_die("%s", argv[i]);
 				time_stamp = statBuf.st_ctime;
 
-				if (!tostdout) {
+				if (!(opt & OPT_tostdout)) {
 					path = xasprintf("%s.gz", argv[i]);
 
 					/* Open output file */
@@ -1233,7 +1225,7 @@
 					outFileNum = STDOUT_FILENO;
 			}
 
-			if (path == NULL && isatty(outFileNum) && force == 0) {
+			if (path == NULL && isatty(outFileNum) && !(opt & OPT_force)) {
 				bb_error_msg
 					("compressed data not written to a terminal. Use -f to force compression.");
 				free(path);




More information about the busybox-cvs mailing list