wget: support multiple URLs on command line even without -O :)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
a3661096f2
commit
9a5b7f636d
@ -140,41 +140,6 @@ static void strip_ipv6_scope_id(char *host)
|
|||||||
overlapping_strcpy(scope, cp);
|
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
|
#if ENABLE_FEATURE_WGET_AUTHENTICATION
|
||||||
/* Base64-encode character string. */
|
/* Base64-encode character string. */
|
||||||
static char *base64enc(const char *str)
|
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 */
|
/* If there was no -O FILE, guess output filename */
|
||||||
output_fd = -1;
|
output_fd = -1;
|
||||||
fname_out_alloc = NULL;
|
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);
|
G.fname_out = bb_get_last_path_component_nostrip(target.path);
|
||||||
/* handle "wget http://kernel.org//" */
|
/* handle "wget http://kernel.org//" */
|
||||||
if (G.fname_out[0] == '/' || !G.fname_out[0])
|
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(lsa);
|
||||||
free(server.allocated);
|
|
||||||
free(target.allocated);
|
|
||||||
|
|
||||||
if (option_mask32 & WGET_OPT_SPIDER) {
|
if (!(option_mask32 & WGET_OPT_SPIDER)) {
|
||||||
free(fname_out_alloc);
|
if (output_fd < 0) {
|
||||||
fclose(sfp);
|
int o_flags = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL;
|
||||||
return EXIT_SUCCESS;
|
/* 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(fname_out_alloc);
|
|
||||||
|
|
||||||
retrieve_file_data(dfp, output_fd);
|
|
||||||
xclose(output_fd);
|
|
||||||
|
|
||||||
if (dfp != sfp) {
|
if (dfp != sfp) {
|
||||||
/* It's ftp. Close data connection properly */
|
/* It's ftp. Close data connection properly */
|
||||||
fclose(dfp);
|
fclose(dfp);
|
||||||
@ -896,6 +852,10 @@ However, in real world it was observed that some web servers
|
|||||||
}
|
}
|
||||||
fclose(sfp);
|
fclose(sfp);
|
||||||
|
|
||||||
|
free(server.allocated);
|
||||||
|
free(target.allocated);
|
||||||
|
free(fname_out_alloc);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user