wget: support multiple URLs on command line even without -O :)
No binary (build failed)
—
(log yok)
| @@ -140,41 +140,6 @@ static void strip_ipv6_scope_id(char *host) | |
| overlapping_strcpy(scope, cp); | |
| } | |
| - | #if 0 /* were needed when we used signal-driven progress bar */ |
| - | /* Read NMEMB bytes into PTR from STREAM. Returns the number of bytes read, |
| - | * and a short count if an eof or non-interrupt error is encountered. */ |
| - | static size_t safe_fread(void *ptr, size_t nmemb, FILE *stream) |
| - | { |
| - | size_t ret; |
| - | char *p = (char*)ptr; |
| - | |
| - | do { |
| - | clearerr(stream); |
| - | errno = 0; |
| - | ret = fread(p, 1, nmemb, stream); |
| - | p += ret; |
| - | nmemb -= ret; |
| - | } while (nmemb && ferror(stream) && errno == EINTR); |
| - | |
| - | return p - (char*)ptr; |
| - | } |
| - | |
| - | /* Read a line or SIZE-1 bytes into S, whichever is less, from STREAM. |
| - | * Returns S, or NULL if an eof or non-interrupt error is encountered. */ |
| - | static char *safe_fgets(char *s, int size, FILE *stream) |
| - | { |
| - | char *ret; |
| - | |
| - | do { |
| - | clearerr(stream); |
| - | errno = 0; |
| - | ret = fgets(s, size, stream); |
| - | } while (ret == NULL && ferror(stream) && errno == EINTR); |
| - | |
| - | return ret; |
| - | } |
| - | #endif |
| - | |
| #if ENABLE_FEATURE_WGET_AUTHENTICATION | |
| /* Base64-encode character string. */ | |
| static char *base64enc(const char *str) | |
| @@ -631,7 +596,7 @@ static int download_one_url(const char *url) | |
| /* If there was no -O FILE, guess output filename */ | |
| output_fd = -1; | |
| fname_out_alloc = NULL; | |
| - | if (!G.fname_out) { |
| + | if (!(option_mask32 & WGET_OPT_OUTNAME)) { |
| G.fname_out = bb_get_last_path_component_nostrip(target.path); | |
| /* handle "wget http://kernel.org//" */ | |
| if (G.fname_out[0] == '/' || !G.fname_out[0]) | |
| @@ -865,28 +830,19 @@ However, in real world it was observed that some web servers | |
| } | |
| free(lsa); | |
| - | free(server.allocated); |
| - | free(target.allocated); |
| - | |
| - | if (option_mask32 & WGET_OPT_SPIDER) { |
| - | free(fname_out_alloc); |
| - | fclose(sfp); |
| - | return EXIT_SUCCESS; |
| - | } |
| - | if (output_fd < 0) { |
| - | int o_flags = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL; |
| - | /* compat with wget: -O FILE can overwrite */ |
| - | if (option_mask32 & WGET_OPT_OUTNAME) |
| - | o_flags = O_WRONLY | O_CREAT | O_TRUNC; |
| - | output_fd = xopen(G.fname_out, o_flags); |
| + | if (!(option_mask32 & WGET_OPT_SPIDER)) { |
| + | if (output_fd < 0) { |
| + | int o_flags = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL; |
| + | /* compat with wget: -O FILE can overwrite */ |
| + | if (option_mask32 & WGET_OPT_OUTNAME) |
| + | o_flags = O_WRONLY | O_CREAT | O_TRUNC; |
| + | output_fd = xopen(G.fname_out, o_flags); |
| + | } |
| + | retrieve_file_data(dfp, output_fd); |
| + | xclose(output_fd); |
| } | |
| - | free(fname_out_alloc); |
| - | |
| - | retrieve_file_data(dfp, output_fd); |
| - | xclose(output_fd); |
| - | |
| if (dfp != sfp) { | |
| /* It's ftp. Close data connection properly */ | |
| fclose(dfp); | |
| @@ -896,6 +852,10 @@ However, in real world it was observed that some web servers | |
| } | |
| fclose(sfp); | |
| + | free(server.allocated); |
| + | free(target.allocated); |
| + | free(fname_out_alloc); |
| + | |
| return EXIT_SUCCESS; | |
| } | |