aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-09-22 15:13:38 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-09-22 15:13:38 +0000
commit01e88f033926c9b316e9667f088733feb2565c6d (patch)
treec6bd6a4927d6716953bafc82f8b27ad4d2874c99
parent27ee7ba95e9735e34ca99566686ed16f6f924158 (diff)
downloadbusybox-w32-01e88f033926c9b316e9667f088733feb2565c6d.tar.gz
busybox-w32-01e88f033926c9b316e9667f088733feb2565c6d.tar.bz2
busybox-w32-01e88f033926c9b316e9667f088733feb2565c6d.zip
gzip: getopt_ulflags'isation
-rw-r--r--archival/gzip.c62
1 files changed, 27 insertions, 35 deletions
diff --git a/archival/gzip.c b/archival/gzip.c
index 7c18154ff..05f6cb582 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -1122,44 +1122,36 @@ typedef struct dirent dir_type;
1122/* ======================================================================== */ 1122/* ======================================================================== */
1123int gzip_main(int argc, char **argv) 1123int gzip_main(int argc, char **argv)
1124{ 1124{
1125 enum {
1126 OPT_tostdout = 0x1,
1127 OPT_force = 0x2,
1128 };
1129
1130 unsigned long opt;
1125 int result; 1131 int result;
1126 int inFileNum; 1132 int inFileNum;
1127 int outFileNum; 1133 int outFileNum;
1128 struct stat statBuf; 1134 struct stat statBuf;
1129 char *delFileName; 1135 char *delFileName;
1130 int tostdout = 0; 1136
1131 int force = 0; 1137 opt = bb_getopt_ulflags(argc, argv, "cf123456789q" USE_GUNZIP("d"));
1132 int opt; 1138 //if (opt & 0x1) // -c
1133 1139 //if (opt & 0x2) // -f
1134 while ((opt = getopt(argc, argv, "cf123456789dq")) != -1) { 1140 /* Ignore 1-9 (compression level) options */
1135 switch (opt) { 1141 //if (opt & 0x4) // -1
1136 case 'c': 1142 //if (opt & 0x8) // -2
1137 tostdout = 1; 1143 //if (opt & 0x10) // -3
1138 break; 1144 //if (opt & 0x20) // -4
1139 case 'f': 1145 //if (opt & 0x40) // -5
1140 force = 1; 1146 //if (opt & 0x80) // -6
1141 break; 1147 //if (opt & 0x100) // -7
1142 /* Ignore 1-9 (compression level) options */ 1148 //if (opt & 0x200) // -8
1143 case '1': 1149 //if (opt & 0x400) // -9
1144 case '2': 1150 //if (opt & 0x800) // -q
1145 case '3': 1151 if (ENABLE_GUNZIP && (opt & 0x1000)) { // -d
1146 case '4': 1152 /* FIXME: bb_getopt_ulflags should not depend on optind */
1147 case '5': 1153 optind = 1;
1148 case '6': 1154 return gunzip_main(argc, argv);
1149 case '7':
1150 case '8':
1151 case '9':
1152 break;
1153 case 'q':
1154 break;
1155#ifdef CONFIG_GUNZIP
1156 case 'd':
1157 optind = 1;
1158 return gunzip_main(argc, argv);
1159#endif
1160 default:
1161 bb_show_usage();
1162 }
1163 } 1155 }
1164 1156
1165 foreground = signal(SIGINT, SIG_IGN) != SIG_IGN; 1157 foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
@@ -1211,7 +1203,7 @@ int gzip_main(int argc, char **argv)
1211 bb_perror_msg_and_die("%s", argv[i]); 1203 bb_perror_msg_and_die("%s", argv[i]);
1212 time_stamp = statBuf.st_ctime; 1204 time_stamp = statBuf.st_ctime;
1213 1205
1214 if (!tostdout) { 1206 if (!(opt & OPT_tostdout)) {
1215 path = xasprintf("%s.gz", argv[i]); 1207 path = xasprintf("%s.gz", argv[i]);
1216 1208
1217 /* Open output file */ 1209 /* Open output file */
@@ -1233,7 +1225,7 @@ int gzip_main(int argc, char **argv)
1233 outFileNum = STDOUT_FILENO; 1225 outFileNum = STDOUT_FILENO;
1234 } 1226 }
1235 1227
1236 if (path == NULL && isatty(outFileNum) && force == 0) { 1228 if (path == NULL && isatty(outFileNum) && !(opt & OPT_force)) {
1237 bb_error_msg 1229 bb_error_msg
1238 ("compressed data not written to a terminal. Use -f to force compression."); 1230 ("compressed data not written to a terminal. Use -f to force compression.");
1239 free(path); 1231 free(path);