diff --git a/src/ChangeLog b/src/ChangeLog index 10554461..9e3d845f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2005-05-17 Hrvoje Niksic + * ftp.c (ftp_loop_internal): Same here. + * http.c (http_loop): Don't clobber the file when -c is specified and the first attempt to retrieve the file fails. diff --git a/src/ftp.c b/src/ftp.c index afc47266..9609f90c 100644 --- a/src/ftp.c +++ b/src/ftp.c @@ -1158,13 +1158,17 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con) } /* Decide whether or not to restart. */ - restval = 0; - if (count > 1) - restval = len; /* start where the previous run left off */ - else if (opt.always_rest - && stat (locf, &st) == 0 - && S_ISREG (st.st_mode)) + if (opt.always_rest + && stat (locf, &st) == 0 + && S_ISREG (st.st_mode)) + /* When -c is used, continue from on-disk size. (Can't use + hstat.len even if count>1 because we don't want a failed + first attempt to clobber existing data.) */ restval = st.st_size; + else if (count > 1) + restval = len; /* start where the previous run left off */ + else + restval = 0; /* Get the current time string. */ tms = time_str (NULL);