mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
[svn] When -E is in use, check for file existence after appending ".html" to the
name and modify the file name if necessary.
This commit is contained in:
parent
25cbd9f692
commit
1805044ecd
@ -1,3 +1,9 @@
|
||||
2005-06-18 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
* http.c (gethttp): When -E is in use, check for file existence
|
||||
after appending ".html" to the name and modify the file name if
|
||||
necessary.
|
||||
|
||||
2005-06-17 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
* connect.c (socket_has_inet6): Removed.
|
||||
|
31
src/http.c
31
src/http.c
@ -1121,6 +1121,12 @@ time_t http_atotm PARAMS ((const char *));
|
||||
request_set_header (req, "User-Agent", opt.useragent, rel_none); \
|
||||
} while (0)
|
||||
|
||||
/* The flags that allow clobbering the file (opening with "wb").
|
||||
Defined here to avoid repetition later. #### This will require
|
||||
rework. */
|
||||
#define ALLOW_CLOBBER (opt.noclobber || opt.always_rest || opt.timestamping \
|
||||
|| opt.dirstruct || opt.output_document)
|
||||
|
||||
/* Retrieve a document through HTTP protocol. It recognizes status
|
||||
code, and correctly handles redirections. It closes the network
|
||||
socket. If it receives an error from the functions below it, it
|
||||
@ -1793,18 +1799,28 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy)
|
||||
text/html file. If some case-insensitive variation on ".htm[l]" isn't
|
||||
already the file's suffix, tack on ".html". */
|
||||
{
|
||||
char* last_period_in_local_filename = strrchr(*hs->local_file, '.');
|
||||
char *last_period_in_local_filename = strrchr (*hs->local_file, '.');
|
||||
|
||||
if (last_period_in_local_filename == NULL
|
||||
|| !(0 == strcasecmp (last_period_in_local_filename, ".htm")
|
||||
|| 0 == strcasecmp (last_period_in_local_filename, ".html")))
|
||||
{
|
||||
size_t local_filename_len = strlen(*hs->local_file);
|
||||
|
||||
*hs->local_file = xrealloc(*hs->local_file,
|
||||
local_filename_len + sizeof(".html"));
|
||||
int local_filename_len = strlen (*hs->local_file);
|
||||
/* Resize the local file, allowing for ".html" preceded by
|
||||
optional ".NUMBER". */
|
||||
*hs->local_file = xrealloc (*hs->local_file,
|
||||
local_filename_len + 24 + sizeof (".html"));
|
||||
strcpy(*hs->local_file + local_filename_len, ".html");
|
||||
|
||||
/* If clobbering is not allowed and the file, as named,
|
||||
exists, tack on ".NUMBER.html" instead. */
|
||||
if (!ALLOW_CLOBBER)
|
||||
{
|
||||
int ext_num = 1;
|
||||
do
|
||||
sprintf (*hs->local_file + local_filename_len,
|
||||
".%d.html", ext_num++);
|
||||
while (file_exists_p (*hs->local_file));
|
||||
}
|
||||
*dt |= ADDED_HTML_EXTENSION;
|
||||
}
|
||||
}
|
||||
@ -1897,8 +1913,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy)
|
||||
rotate_backups (*hs->local_file);
|
||||
if (hs->restval)
|
||||
fp = fopen (*hs->local_file, "ab");
|
||||
else if (opt.noclobber || opt.always_rest || opt.timestamping || opt.dirstruct
|
||||
|| opt.output_document)
|
||||
else if (ALLOW_CLOBBER)
|
||||
fp = fopen (*hs->local_file, "wb");
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user