]> sjero.net Git - wget/blobdiff - src/main.c
[svn] When the download is finished, print the time the download took.
[wget] / src / main.c
index 5cb383a1818b34855d28f6562f340e2acb113e88..96d93589253a118bf008c553030bd7a2e364a08e 100644 (file)
@@ -61,7 +61,6 @@ so, delete this exception statement from your version.  */
 
 struct options opt;
 
-extern LARGE_INT total_downloaded_bytes;
 extern char *version_string;
 
 extern struct cookie_jar *wget_cookie_jar;
@@ -638,6 +637,31 @@ Recursive accept/reject:\n"),
   exit (0);
 }
 
+static char *
+secs_to_human_time (double secs_decimal)
+{
+  static char buf[32];
+  int secs = (int) (secs_decimal + 0.5);
+  int hours, mins, days;
+
+  days = secs / 86400, secs %= 86400;
+  hours = secs / 3600, secs %= 3600;
+  mins = secs / 60, secs %= 60;
+
+  if (days)
+    sprintf (buf, _("%dd %dh %dm %ds"), days, hours, mins, secs);
+  else if (hours)
+    sprintf (buf, _("%dh %dm %ds"), hours, mins, secs);
+  else if (mins)
+    sprintf (buf, _("%dm %ds"), mins, secs);
+  else if (secs_decimal >= 1)
+    sprintf (buf, _("%ds"), secs);
+  else
+    sprintf (buf, _("%.2fs"), secs_decimal);
+
+  return buf;
+}
+
 static void
 print_version (void)
 {
@@ -660,7 +684,7 @@ main (int argc, char *const *argv)
   char **url, **t;
   int i, ret, longindex;
   int nurl, status;
-  int append_to_log = 0;
+  bool append_to_log = false;
 
   i18n_initialize ();
 
@@ -719,7 +743,7 @@ main (int argc, char *const *argv)
          else
            {
              /* NEG is true for `--no-FOO' style boolean options. */
-             int neg = val & BOOLEAN_NEG_MARKER;
+             bool neg = !!(val & BOOLEAN_NEG_MARKER);
              setoptval (opt->data, neg ? "0" : "1", opt->long_name);
            }
          break;
@@ -731,7 +755,7 @@ main (int argc, char *const *argv)
          break;
        case OPT__APPEND_OUTPUT:
          setoptval ("logfile", optarg, opt->long_name);
-         append_to_log = 1;
+         append_to_log = true;
          break;
        case OPT__EXECUTE:
          run_command (optarg);
@@ -775,7 +799,7 @@ main (int argc, char *const *argv)
            /* The wgetrc commands are named noparent and noclobber,
               so we must revert the meaning of the cmdline options
               before passing the value to setoptval.  */
-           int flag = 1;
+           bool flag = true;
            if (optarg)
              flag = (*optarg == '1' || TOLOWER (*optarg) == 'y'
                      || (TOLOWER (optarg[0]) == 'o'
@@ -877,13 +901,13 @@ Can't timestamp and not clobber old files at the same time.\n"));
   if (opt.output_document)
     {
       extern FILE *output_stream;
-      extern int output_stream_regular;
+      extern bool output_stream_regular;
 
       if (HYPHENP (opt.output_document))
        output_stream = stdout;
       else
        {
-         struct_stat st;
+         struct_fstat st;
          output_stream = fopen (opt.output_document,
                                 opt.always_rest ? "ab" : "wb");
          if (output_stream == NULL)
@@ -892,7 +916,7 @@ Can't timestamp and not clobber old files at the same time.\n"));
              exit (1);
            }
          if (fstat (fileno (output_stream), &st) == 0 && S_ISREG (st.st_mode))
-           output_stream_regular = 1;
+           output_stream_regular = true;
        }
     }
 
@@ -960,14 +984,17 @@ Can't timestamp and not clobber old files at the same time.\n"));
       || (opt.input_filename && total_downloaded_bytes != 0))
     {
       logprintf (LOG_NOTQUIET,
-                _("\nFINISHED --%s--\nDownloaded: %s bytes in %d files\n"),
-                time_str (NULL), with_thousand_seps_large (total_downloaded_bytes),
-                opt.numurls);
+                _("FINISHED --%s--\nDownloaded: %d files, %s in %s (%s)\n"),
+                time_str (NULL),
+                opt.numurls,
+                human_readable (total_downloaded_bytes),
+                secs_to_human_time (total_download_time / 1000),
+                retr_rate (total_downloaded_bytes, total_download_time));
       /* Print quota warning, if exceeded.  */
       if (opt.quota && total_downloaded_bytes > opt.quota)
        logprintf (LOG_NOTQUIET,
-                  _("Download quota (%s bytes) EXCEEDED!\n"),
-                  with_thousand_seps_large (opt.quota));
+                  _("Download quota of %s EXCEEDED!\n"),
+                  human_readable (opt.quota));
     }
 
   if (opt.cookies_output)