Patch attached. 

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2010-12-10 22:55:54 +0000
+++ src/ChangeLog	2011-02-22 12:43:23 +0000
@@ -1,3 +1,9 @@
+2011-02-22  Steven Schubiger  <[email protected]>
+
+	* http.c (gethttp, http_loop): Move duplicated code which is run
+	when an existing file is not to be clobbered to a function.
+	(get_file_flags): New static function.
+
 2010-12-10  Evgeniy Philippov <[email protected]> (tiny change)
 
 	* main.c (main): Initialize `total_downloaded_bytes'.

=== modified file 'src/http.c'
--- src/http.c	2011-01-01 12:19:37 +0000
+++ src/http.c	2011-02-18 18:56:57 +0000
@@ -1448,6 +1448,20 @@
   hs->error = NULL;
 }
 
+static void
+get_file_flags (const char *filename, int *dt)
+{
+  logprintf (LOG_VERBOSE, _("\
+File %s already there; not retrieving.\n\n"), quote (filename));
+  /* If the file is there, we suppose it's retrieved OK.  */
+  *dt |= RETROKF;
+
+  /* #### Bogusness alert.  */
+  /* If its suffix is "html" or "htm" or similar, assume text/html.  */
+  if (has_html_suffix_p (filename))
+    *dt |= TEXTHTML;
+}
+
 #define BEGINS_WITH(line, string_constant)                               \
   (!strncasecmp (line, string_constant, sizeof (string_constant) - 1)    \
    && (c_isspace (line[sizeof (string_constant) - 1])                      \
@@ -2158,16 +2172,7 @@
           /* If opt.noclobber is turned on and file already exists, do not
              retrieve the file. But if the output_document was given, then this
              test was already done and the file didn't exist. Hence the !opt.output_document */
-          logprintf (LOG_VERBOSE, _("\
-File %s already there; not retrieving.\n\n"), quote (hs->local_file));
-          /* If the file is there, we suppose it's retrieved OK.  */
-          *dt |= RETROKF;
-
-          /* #### Bogusness alert.  */
-          /* If its suffix is "html" or "htm" or similar, assume text/html.  */
-          if (has_html_suffix_p (hs->local_file))
-            *dt |= TEXTHTML;
-
+          get_file_flags (hs->local_file, dt);
           xfree (head);
           xfree_null (message);
           return RETRUNNEEDED;
@@ -2639,24 +2644,12 @@
       got_name = true;
     }
 
-  /* TODO: Ick! This code is now in both gethttp and http_loop, and is
-   * screaming for some refactoring. */
   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
          retrieve the file. But if the output_document was given, then this
          test was already done and the file didn't exist. Hence the !opt.output_document */
-      logprintf (LOG_VERBOSE, _("\
-File %s already there; not retrieving.\n\n"),
-                 quote (hstat.local_file));
-      /* If the file is there, we suppose it's retrieved OK.  */
-      *dt |= RETROKF;
-
-      /* #### Bogusness alert.  */
-      /* If its suffix is "html" or "htm" or similar, assume text/html.  */
-      if (has_html_suffix_p (hstat.local_file))
-        *dt |= TEXTHTML;
-
+      get_file_flags (hstat.local_file, dt);
       ret = RETROK;
       goto exit;
     }

Reply via email to