]> sjero.net Git - wget/commitdiff
[svn] Fix broken -c in new HTTP code.
authormtortonesi <devnull@localhost>
Thu, 17 Aug 2006 10:49:29 +0000 (03:49 -0700)
committermtortonesi <devnull@localhost>
Thu, 17 Aug 2006 10:49:29 +0000 (03:49 -0700)
src/ChangeLog
src/http.c

index c43619b3f33a862cb566f27e344b03ed32bb3f0e..9a5ffee3b664a831382056a64da525d2325cbb96 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-16  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Fixed bug which broke --continue feature. Now if -c is
+       given, http_loop sends a HEAD request to find out the destination
+       filename before resuming download.
+
 2006-08-08  Hrvoje Niksic  <hniksic@xemacs.org>
 
        * utils.c (datetime_str): Avoid code repetition with time_str.
index 77f9797232cdb648dde8b641c4eb2d023ca0e7bb..63bcca6340db1cfe310e5cbeeb1d92d6fb864f28 100644 (file)
@@ -1762,7 +1762,7 @@ File `%s' already there; not retrieving.\n\n"), hs->local_file);
 
           return RETROK;
         }
-      else
+      else if (!ALLOW_CLOBBER)
         {
           char *unique = unique_name (hs->local_file, true);
           if (unique != hs->local_file)
@@ -2231,6 +2231,7 @@ http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
 {
   int count;
   bool got_head = false;         /* used for time-stamping */
+  bool got_name = false;
   char *tms;
   const char *tmrate;
   uerr_t err, ret = TRYLIMEXC;
@@ -2264,7 +2265,10 @@ http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
   hstat.referer = referer;
 
   if (opt.output_document)
-    hstat.local_file = xstrdup (opt.output_document);
+    {
+      hstat.local_file = xstrdup (opt.output_document);
+      got_name = true;
+    }
 
   /* Reset the counter. */
   count = 0;
@@ -2309,13 +2313,16 @@ http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
       /* Default document type is empty.  However, if spider mode is
          on or time-stamping is employed, HEAD_ONLY commands is
          encoded within *dt.  */
-      if ((opt.spider && !opt.recursive) || (opt.timestamping && !got_head))
+      if ((opt.spider && !opt.recursive) 
+          || (opt.timestamping && !got_head)
+          || (opt.always_rest && !got_name))
         *dt |= HEAD_ONLY;
       else
         *dt &= ~HEAD_ONLY;
 
       /* Decide whether or not to restart.  */
       if (opt.always_rest
+          && got_name
           && stat (hstat.local_file, &st) == 0
           && S_ISREG (st.st_mode))
         /* When -c is used, continue from on-disk size.  (Can't use
@@ -2484,6 +2491,12 @@ The sizes do not match (local %s) -- retrieving.\n"),
           continue;
         }
       
+      if (opt.always_rest && !got_name)
+        {
+          got_name = true;
+          continue;
+        }
+          
       if ((tmr != (time_t) (-1))
           && (!opt.spider || opt.recursive)
           && ((hstat.len == hstat.contlen) ||