1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

Fixed bug #23238: --no-clobber doesn't work with -O flag

"wget -nc -O file URL" now checks if "file" exists first. If it does, it terminates.
This commit is contained in:
Joao Ferreira 2008-05-14 22:10:37 +01:00
parent 1ddd88d7c5
commit 888c30ba01
3 changed files with 15 additions and 5 deletions

View File

@ -1091,7 +1091,9 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con)
if (!con->target) if (!con->target)
con->target = url_file_name (u); con->target = url_file_name (u);
if (opt.noclobber && file_exists_p (con->target)) /* If the output_document was given, then this check was already done and
the file doesn't exist. Hence the !opt.output_document */
if (opt.noclobber && !opt.output_document && file_exists_p (con->target))
{ {
logprintf (LOG_VERBOSE, logprintf (LOG_VERBOSE,
_("File `%s' already there; not retrieving.\n"), con->target); _("File `%s' already there; not retrieving.\n"), con->target);

View File

@ -1821,10 +1821,11 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy)
/* TODO: perform this check only once. */ /* TODO: perform this check only once. */
if (!hs->existence_checked && file_exists_p (hs->local_file)) if (!hs->existence_checked && file_exists_p (hs->local_file))
{ {
if (opt.noclobber) if (opt.noclobber && !opt.output_document)
{ {
/* If opt.noclobber is turned on and file already exists, do not /* If opt.noclobber is turned on and file already exists, do not
retrieve the file */ retrieve the file. But if the output_document was given, then this
test was already done and the file doesn't exist. Hence the !opt.output_document */
logprintf (LOG_VERBOSE, _("\ logprintf (LOG_VERBOSE, _("\
File `%s' already there; not retrieving.\n\n"), hs->local_file); File `%s' already there; not retrieving.\n\n"), hs->local_file);
/* If the file is there, we suppose it's retrieved OK. */ /* If the file is there, we suppose it's retrieved OK. */
@ -2374,10 +2375,11 @@ http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
/* TODO: Ick! This code is now in both gethttp and http_loop, and is /* TODO: Ick! This code is now in both gethttp and http_loop, and is
* screaming for some refactoring. */ * screaming for some refactoring. */
if (got_name && file_exists_p (hstat.local_file) && opt.noclobber) if (got_name && file_exists_p (hstat.local_file) && opt.noclobber && !opt.output_document)
{ {
/* If opt.noclobber is turned on and file already exists, do not /* If opt.noclobber is turned on and file already exists, do not
retrieve the file */ retrieve the file. But if the output_document was given, then this
test was already done and the file doesn't exist. Hence the !opt.output_document */
logprintf (LOG_VERBOSE, _("\ logprintf (LOG_VERBOSE, _("\
File `%s' already there; not retrieving.\n\n"), File `%s' already there; not retrieving.\n\n"),
hstat.local_file); hstat.local_file);

View File

@ -905,6 +905,12 @@ WARNING: timestamping does nothing in combination with -O. See the manual\n\
for details.\n\n")); for details.\n\n"));
opt.timestamping = false; opt.timestamping = false;
} }
if (opt.noclobber && file_exists_p(opt.output_document))
{
/* Check if output file exists; if it does, exit. */
logprintf (LOG_VERBOSE, _("File `%s' already there; not retrieving.\n"), opt.output_document);
exit(1);
}
} }
if (!nurl && !opt.input_filename) if (!nurl && !opt.input_filename)