I have found that -k option does not work on downloaded ftp files.
The key problem seems to be that register_download is never called on
ftp files downloaded as local_file is never set for calls to ftp_loop
like they are on calls to http_loop.
So, I added local_file as a parameter to ftp_loop and used con.target
within the ftp_loop function in order to save this information such
that it get's retistered so it will be rewritten.
The diffs are for files ftp.c, ftp.h, and retr.c.
I have not studied the impact on further logic on the change.
The one thing I am unsure of is the following if statement
(line 428 of wget 1.8.2's retr.c file):
if (redirections && local_file && u->scheme == SCHEME_FTP)
If local_file here relied on a setting in from prior logic before the
ftp_loop call, then that value would be gone, and this logic would
therefore would likely not work as intended.
Your input on these changes would be appreciated. All I ask is that if
this change be used that I get a mention in the ChangeLog.
I'm still looking into any further impacts these code changes would
have, but initially it looks OK.
Thanks,
-- Curt
Here are the diffs:
*** ftp.c Fri May 17 23:05:16 2002
--- ../../wget-1.8.2.cw/src/ftp.c Sat Oct 19 13:14:06 2002
***************
*** 1637,1643 ****
of URL. Inherently, its capabilities are limited on what can be
encoded into a URL. */
uerr_t
! ftp_loop (struct url *u, int *dt)
{
ccon con; /* FTP connection */
uerr_t res;
--- 1637,1643 ----
of URL. Inherently, its capabilities are limited on what can be
encoded into a URL. */
uerr_t
! ftp_loop (struct url *u, char **local_file, int *dt)
{
ccon con; /* FTP connection */
uerr_t res;
***************
*** 1716,1723 ****
CLOSE (RBUF_FD (&con.rbuf));
FREE_MAYBE (con.id);
con.id = NULL;
! FREE_MAYBE (con.target);
! con.target = NULL;
return res;
}
--- 1716,1730 ----
CLOSE (RBUF_FD (&con.rbuf));
FREE_MAYBE (con.id);
con.id = NULL;
! if (res == RETROK)
! {
! *local_file = con.target;
! }
! else
! {
! FREE_MAYBE (con.target);
! con.target = NULL;
! }
return res;
}
*** ftp.h Sat May 18 23:04:53 2002
--- ../../wget-1.8.2.cw/src/ftp.h Sat Oct 19 13:13:36 2002
***************
*** 109,115 ****
};
struct fileinfo *ftp_parse_ls PARAMS ((const char *, const enum stype));
! uerr_t ftp_loop PARAMS ((struct url *, int *));
uerr_t ftp_index PARAMS ((const char *, struct url *, struct fileinfo *));
--- 109,115 ----
};
struct fileinfo *ftp_parse_ls PARAMS ((const char *, const enum stype));
! uerr_t ftp_loop PARAMS ((struct url *, char **, int *));
uerr_t ftp_index PARAMS ((const char *, struct url *, struct fileinfo *));
*** retr.c Fri May 17 23:05:21 2002
--- ../../wget-1.8.2.cw/src/retr.c Sat Oct 19 12:58:34 2002
***************
*** 418,424 ****
int oldrec = opt.recursive;
if (redirections)
opt.recursive = 0;
! result = ftp_loop (u, dt);
opt.recursive = oldrec;
/* There is a possibility of having HTTP being redirected to
--- 418,424 ----
int oldrec = opt.recursive;
if (redirections)
opt.recursive = 0;
! result = ftp_loop (u, &local_file, dt);
opt.recursive = oldrec;
/* There is a possibility of having HTTP being redirected to
Curtis H. Wilbar Jr.
Hawk Mountain Networks
[EMAIL PROTECTED]