diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2003-12-19 12:08:56 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2003-12-19 12:08:56 +0000 |
commit | 514aeabc366d8763cb1e2437be80f3f13d135ec3 (patch) | |
tree | 64fe5c986ba1604d6c6c4a90421a654d4ced9581 /networking/wget.c | |
parent | 28c111e1c5b159f09a82692a4a83bef0e1899034 (diff) | |
download | busybox-w32-514aeabc366d8763cb1e2437be80f3f13d135ec3.tar.gz busybox-w32-514aeabc366d8763cb1e2437be80f3f13d135ec3.tar.bz2 busybox-w32-514aeabc366d8763cb1e2437be80f3f13d135ec3.zip |
Use getopt_ulflags
Diffstat (limited to 'networking/wget.c')
-rw-r--r-- | networking/wget.c | 108 |
1 files changed, 50 insertions, 58 deletions
diff --git a/networking/wget.c b/networking/wget.c index 08026915e..3e74ed357 100644 --- a/networking/wget.c +++ b/networking/wget.c | |||
@@ -142,9 +142,29 @@ char *base64enc(char *p, char *buf, int len) { | |||
142 | } | 142 | } |
143 | #endif | 143 | #endif |
144 | 144 | ||
145 | #define WGET_OPT_CONTINUE 1 | ||
146 | #define WGET_OPT_QUIET 2 | ||
147 | #define WGET_OPT_PASSIVE 4 | ||
148 | #define WGET_OPT_OUTNAME 8 | ||
149 | #define WGET_OPT_HEADER 16 | ||
150 | #define WGET_OPT_PREFIX 32 | ||
151 | #define WGET_OPT_PROXY 64 | ||
152 | |||
153 | static const struct option wget_long_options[] = { | ||
154 | { "continue", 0, NULL, 'c' }, | ||
155 | { "quiet", 0, NULL, 'q' }, | ||
156 | { "passive-ftp", 0, NULL, 139 }, | ||
157 | { "output-document", 1, NULL, 'O' }, | ||
158 | { "header", 1, NULL, 131 }, | ||
159 | { "directory-prefix",1, NULL, 'P' }, | ||
160 | { "proxy", 1, NULL, 'Y' }, | ||
161 | { 0, 0, 0, 0 } | ||
162 | }; | ||
163 | |||
145 | int wget_main(int argc, char **argv) | 164 | int wget_main(int argc, char **argv) |
146 | { | 165 | { |
147 | int n, try=5, status; | 166 | int n, try=5, status; |
167 | unsigned long opt; | ||
148 | int port; | 168 | int port; |
149 | char *proxy = 0; | 169 | char *proxy = 0; |
150 | char *dir_prefix=NULL; | 170 | char *dir_prefix=NULL; |
@@ -153,9 +173,9 @@ int wget_main(int argc, char **argv) | |||
153 | char extra_headers[1024]; | 173 | char extra_headers[1024]; |
154 | char *extra_headers_ptr = extra_headers; | 174 | char *extra_headers_ptr = extra_headers; |
155 | int extra_headers_left = sizeof(extra_headers); | 175 | int extra_headers_left = sizeof(extra_headers); |
156 | int which_long_opt = 0, option_index = -1; | ||
157 | struct host_info server, target; | 176 | struct host_info server, target; |
158 | struct sockaddr_in s_in; | 177 | struct sockaddr_in s_in; |
178 | llist_t *headers_llist = NULL; | ||
159 | 179 | ||
160 | FILE *sfp = NULL; /* socket to web/ftp server */ | 180 | FILE *sfp = NULL; /* socket to web/ftp server */ |
161 | FILE *dfp = NULL; /* socket to ftp server (data) */ | 181 | FILE *dfp = NULL; /* socket to ftp server (data) */ |
@@ -166,68 +186,40 @@ int wget_main(int argc, char **argv) | |||
166 | FILE *output; /* socket to web server */ | 186 | FILE *output; /* socket to web server */ |
167 | int quiet_flag = FALSE; /* Be verry, verry quiet... */ | 187 | int quiet_flag = FALSE; /* Be verry, verry quiet... */ |
168 | int noproxy = 0; /* Use proxies if env vars are set */ | 188 | int noproxy = 0; /* Use proxies if env vars are set */ |
189 | char *proxy_flag = "on"; /* Use proxies if env vars are set */ | ||
169 | 190 | ||
170 | #define LONG_HEADER 1 | ||
171 | #define LONG_PASSIVE 2 | ||
172 | |||
173 | struct option long_options[] = { | ||
174 | { "continue", 0, NULL, 'c' }, | ||
175 | { "quiet", 0, NULL, 'q' }, | ||
176 | { "output-document", 1, NULL, 'O' }, | ||
177 | { "header", 1, &which_long_opt, LONG_HEADER }, | ||
178 | { "proxy", 1, NULL, 'Y' }, | ||
179 | { "passive-ftp", 0, &which_long_opt, LONG_PASSIVE }, | ||
180 | { 0, 0, 0, 0 } | ||
181 | }; | ||
182 | /* | 191 | /* |
183 | * Crack command line. | 192 | * Crack command line. |
184 | */ | 193 | */ |
185 | while ((n = getopt_long(argc, argv, "cqO:P:Y:", long_options, &option_index)) != EOF) { | 194 | bb_opt_complementaly = "\203*"; |
186 | switch (n) { | 195 | bb_applet_long_options = wget_long_options; |
187 | case 'c': | 196 | opt = bb_getopt_ulflags(argc, argv, "cq\213O:\203:P:Y:", &fname_out, &headers_llist, &dir_prefix, &proxy_flag); |
188 | ++do_continue; | 197 | if (opt & WGET_OPT_CONTINUE) { |
189 | break; | 198 | ++do_continue; |
190 | case 'P': | 199 | } |
191 | dir_prefix = optarg; | 200 | if (opt & WGET_OPT_QUIET) { |
192 | break; | 201 | quiet_flag = TRUE; |
193 | case 'q': | 202 | } |
194 | quiet_flag = TRUE; | 203 | if (strcmp(proxy_flag, "on") == 0) { |
195 | break; | 204 | /* Use the proxy if necessary. */ |
196 | case 'O': | 205 | proxy = getenv(target.is_ftp ? "ftp_proxy" : "http_proxy"); |
197 | /* can't set fname_out to NULL if outputting to stdout, because | 206 | if (proxy) |
198 | * this gets interpreted as the auto-gen output filename | 207 | parse_url(bb_xstrdup(proxy), &server); |
199 | * case below - tausq@debian.org | 208 | } |
200 | */ | 209 | if (opt & WGET_OPT_HEADER) { |
201 | fname_out = optarg; | 210 | while (headers_llist) { |
202 | break; | 211 | int arglen = strlen(headers_llist->data); |
203 | case 'Y': | 212 | if (extra_headers_left - arglen - 2 <= 0) |
204 | if (strcmp(optarg, "off") == 0) | 213 | bb_error_msg_and_die("extra_headers buffer too small(need %i)", extra_headers_left - arglen); |
205 | noproxy=1; | 214 | strcpy(extra_headers_ptr, headers_llist->data); |
206 | break; | 215 | extra_headers_ptr += arglen; |
207 | case 0: | 216 | extra_headers_left -= ( arglen + 2 ); |
208 | switch (which_long_opt) { | 217 | *extra_headers_ptr++ = '\r'; |
209 | case LONG_HEADER: { | 218 | *extra_headers_ptr++ = '\n'; |
210 | int arglen = strlen(optarg); | 219 | *(extra_headers_ptr + 1) = 0; |
211 | if(extra_headers_left - arglen - 2 <= 0) | 220 | headers_llist = headers_llist->link; |
212 | bb_error_msg_and_die("extra_headers buffer too small(need %i)", extra_headers_left - arglen); | ||
213 | strcpy(extra_headers_ptr, optarg); | ||
214 | extra_headers_ptr += arglen; | ||
215 | extra_headers_left -= ( arglen + 2 ); | ||
216 | *extra_headers_ptr++ = '\r'; | ||
217 | *extra_headers_ptr++ = '\n'; | ||
218 | *(extra_headers_ptr + 1) = 0; | ||
219 | break; | ||
220 | } | ||
221 | case LONG_PASSIVE: | ||
222 | // ignore -- we always use passive mode | ||
223 | break; | ||
224 | } | ||
225 | break; | ||
226 | default: | ||
227 | bb_show_usage(); | ||
228 | } | 221 | } |
229 | } | 222 | } |
230 | |||
231 | if (argc - optind != 1) | 223 | if (argc - optind != 1) |
232 | bb_show_usage(); | 224 | bb_show_usage(); |
233 | 225 | ||
@@ -850,7 +842,7 @@ progressmeter(int flag) | |||
850 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 842 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
851 | * SUCH DAMAGE. | 843 | * SUCH DAMAGE. |
852 | * | 844 | * |
853 | * $Id: wget.c,v 1.61 2003/10/31 09:31:43 andersen Exp $ | 845 | * $Id: wget.c,v 1.62 2003/12/19 12:08:56 bug1 Exp $ |
854 | */ | 846 | */ |
855 | 847 | ||
856 | 848 | ||