bug-wget
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-wget] [PATCH] [BUG-33838] - A way to turn off verbosity but still


From: Sasikantha babu
Subject: [Bug-wget] [PATCH] [BUG-33838] - A way to turn off verbosity but still have a progress bar
Date: Wed, 16 May 2012 00:29:30 +0530

Fix of defect 33838 - https://savannah.gnu.org/bugs/?33838

OutPut Logs
----------

address@hidden wget]# 
address@hidden wget]# ./src/wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz 
--progress=dot -q

     0K .......... .......... .......... .......... .......... 11% 80.2K 5s
    50K .......... .......... .......... .......... .......... 22% 80.5K 4s
   100K .......... .......... .......... .......... .......... 34%  239K 3s
   150K .......... .......... .......... .......... .......... 45% 80.6K 2s
   200K .......... .......... .......... .......... .......... 57%  120K 2s
   250K .......... .......... .......... .......... .......... 68% 80.4K 1s
   300K .......... .......... .......... .......... .......... 80%  120K 1s
   350K .......... .......... .......... .......... .......... 91% 80.2K 0s
   400K .......... .......... .......... ......               100% 58.7K=4.8s

address@hidden wget]# ./src/wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz 
--progress=bar -q

100%[===================================================================================================================>]
 446,966     56.0KB/s   in 8.2s   

address@hidden wget]# ./src/wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz 
--progress=bar -q -nv

100%[===================================================================================================================>]
 446,966     43.8KB/s   in 9.9s   

address@hidden wget]# ./src/wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz 
--progress=dot
--2012-05-16 00:26:29--  http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 446966 (436K) [application/x-gzip]
Saving to: ‘wget-1.5.3.tar.gz.3’

     0K .......... .......... .......... .......... .......... 11% 39.3K 10s
    50K .......... .......... .......... .......... .......... 22% 56.5K 7s
   100K .......... .......... .......... .......... .......... 34% 59.1K 6s
   150K .......... .......... .......... .......... .......... 45% 45.5K 5s
   200K .......... .......... .......... .......... .......... 57% 47.4K 4s
   250K .......... .......... .......... .......... .......... 68%  107K 3s
   300K .......... .......... .......... .......... .......... 80% 49.0K 2s
   350K .......... .......... .......... .......... .......... 91% 65.0K 1s
   400K .......... .......... .......... ......               100% 48.8K=8.2s

2012-05-16 00:26:38 (53.5 KB/s) - ‘wget-1.5.3.tar.gz.3’ saved [446966/446966]

address@hidden wget]# 


Signed-off-by: Sasikantha babu <address@hidden>
---
 src/ChangeLog  |   13 +++++++++++++
 src/init.c     |    1 +
 src/log.c      |   38 ++++++++++++++++++++++++++++++++++++++
 src/log.h      |    2 ++
 src/main.c     |    2 +-
 src/options.h  |    2 ++
 src/progress.c |   40 ++++++++++++++++++++--------------------
 src/retr.c     |    2 +-
 8 files changed, 78 insertions(+), 22 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 68df65b..b9e0b06 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,16 @@
+2012-05-16  Sasikantha Babu   <address@hidden>
+       * init.c (cmd_spec_progress): initialized opt.progress to true.
+       * log.c (logprogress): Added new function +logprogress to
+       log progess status. It is similar to logprintf, but it overrides
+       the option -q and -nv, if --progress mentioned explicit.
+       * log.h: Added function prototype for logprogress.
+       * main.c (main) : Initialize progress for --progress option.
+       * options.h (struct opt): Added option bool variable for progress.
+       * retr.c (fd_read_body): Create progress for --progress option
+       * progress.c (dot_create, print_row_stats, dot_update, dot_finish
+       , bar_create, bar_finish, display_image):  Used logprogress to 
+       override -q and -nv option over logprintf
+
 2012-05-14  Tim Ruehsen  <address@hidden>
 
        * gnutls.c (wgnutls_read_timeout): removed warnings, moved fcntl stuff
diff --git a/src/init.c b/src/init.c
index 57a4f00..2a8c8c5 100644
--- a/src/init.c
+++ b/src/init.c
@@ -1358,6 +1358,7 @@ cmd_spec_progress (const char *com, const char *val, void 
*place_ignored)
   /* Don't call set_progress_implementation here.  It will be called
      in main() when it becomes clear what the log output is.  */
   opt.progress_type = xstrdup (val);
+  opt.progress = true;
   return true;
 }
 
diff --git a/src/log.c b/src/log.c
index 0185df1..5b4f61a 100644
--- a/src/log.c
+++ b/src/log.c
@@ -548,6 +548,44 @@ logprintf (enum log_options o, const char *fmt, ...)
   while (!done);
 }
 
+/* Print a message to the screen or to the log.  The first argument
+   defines the verbosity of the message, and the rest are as in
+   printf(3).  Call this function only to log progress.
+
+   This function ignores -q and -nv options if we pass --progress=<xxx>
+   along with them (xxx = bar or dot) i.e explicit --progress overrides
+   -q and(or) -nv.
+ */
+
+void
+logprogress (enum log_options o, const char *fmt, ...)
+{
+  va_list args;
+  struct logvprintf_state lpstate;
+  bool done;
+
+  check_redirect_output ();
+  if (inhibit_logging)
+    return;
+
+  /*If progress bar flag is set Ignore -q or -nv*/
+  if (!opt.progress)
+    CHECK_VERBOSE (o);
+
+  xzero (lpstate);
+  do
+    {
+      va_start (args, fmt);
+      done = log_vprintf_internal (&lpstate, fmt, args);
+      va_end (args);
+
+      if (done && errno == EPIPE)
+        exit (1);
+    }
+  while (!done);
+}
+
+
 #ifdef ENABLE_DEBUG
 /* The same as logprintf(), but does anything only if opt.debug is
    true.  */
diff --git a/src/log.h b/src/log.h
index d74ca53..023cf7f 100644
--- a/src/log.h
+++ b/src/log.h
@@ -42,6 +42,8 @@ void log_set_warc_log_fp (FILE *);
 
 void logprintf (enum log_options, const char *, ...)
      GCC_FORMAT_ATTR (2, 3);
+void logprogress (enum log_options, const char *, ...)
+     GCC_FORMAT_ATTR (2, 3);
 void debug_logprintf (const char *, ...) GCC_FORMAT_ATTR (1, 2);
 void logputs (enum log_options, const char *);
 void logflush (void);
diff --git a/src/main.c b/src/main.c
index aac01ac..462c2c7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1407,7 +1407,7 @@ for details.\n\n"));
 
   /* Initialize progress.  Have to do this after the options are
      processed so we know where the log file is.  */
-  if (opt.verbose)
+  if (opt.verbose || opt.progress)
     set_progress_implementation (opt.progress_type);
 
   /* Fill in the arguments.  */
diff --git a/src/options.h b/src/options.h
index 0da7937..edcc2a2 100644
--- a/src/options.h
+++ b/src/options.h
@@ -280,6 +280,8 @@ struct options
   bool show_all_dns_entries; /* Show all the DNS entries when resolving a
                                 name. */
   bool bits_fmt;              /*Output bandwidth in bits format*/
+
+  bool progress;              /*Progress bar*/
 };
 
 extern struct options opt;
diff --git a/src/progress.c b/src/progress.c
index f61c95e..ce01bd1 100644
--- a/src/progress.c
+++ b/src/progress.c
@@ -237,18 +237,18 @@ dot_create (wgint initial, wgint total)
           /* Align the [ skipping ... ] line with the dots.  To do
              that, insert the number of spaces equal to the number of
              digits in the skipped amount in K.  */
-          logprintf (LOG_VERBOSE, _("\n%*s[ skipping %sK ]"),
+          logprogress (LOG_VERBOSE, _("\n%*s[ skipping %sK ]"),
                      2 + skipped_k_len, "",
                      number_to_static_string (skipped_k));
         }
 
-      logprintf (LOG_VERBOSE, "\n%6sK",
+      logprogress (LOG_VERBOSE, "\n%6sK",
                  number_to_static_string (skipped / 1024));
       for (; remainder >= dot_bytes; remainder -= dot_bytes)
         {
           if (dp->dots % opt.dot_spacing == 0)
-            logputs (LOG_VERBOSE, " ");
-          logputs (LOG_VERBOSE, ",");
+            logprogress (LOG_VERBOSE, " ");
+          logprogress (LOG_VERBOSE, ",");
           ++dp->dots;
         }
       assert (dp->dots < opt.dots_in_line);
@@ -289,7 +289,7 @@ print_row_stats (struct dot_progress *dp, double dltime, 
bool last)
          been retrieved.  12.8% will round to 12% because the 13% mark
          has not yet been reached.  100% is only shown when done.  */
       int percentage = 100.0 * bytes_displayed / dp->total_length;
-      logprintf (LOG_VERBOSE, "%3d%%", percentage);
+      logprogress (LOG_VERBOSE, "%3d%%", percentage);
     }
 
   {
@@ -306,7 +306,7 @@ print_row_stats (struct dot_progress *dp, double dltime, 
bool last)
     if (dp->rows == dp->initial_length / ROW_BYTES)
       bytes_this_row -= dp->initial_length % ROW_BYTES;
     rate = calc_rate (bytes_this_row, dltime - dp->last_timer_value, &units);
-    logprintf (LOG_VERBOSE, " %4.*f%c",
+    logprogress (LOG_VERBOSE, " %4.*f%c",
                rate >= 99.95 ? 0 : rate >= 9.995 ? 1 : 2,
                rate, names[units]);
     dp->last_timer_value = dltime;
@@ -323,7 +323,7 @@ print_row_stats (struct dot_progress *dp, double dltime, 
bool last)
           wgint bytes_sofar = bytes_displayed - dp->initial_length;
           double eta = dltime * bytes_remaining / bytes_sofar;
           if (eta < INT_MAX - 1)
-            logprintf (LOG_VERBOSE, " %s",
+            logprogress (LOG_VERBOSE, " %s",
                        eta_to_human_short ((int) (eta + 0.5), true));
         }
     }
@@ -331,10 +331,10 @@ print_row_stats (struct dot_progress *dp, double dltime, 
bool last)
     {
       /* When done, print the total download time */
       if (dltime >= 10)
-        logprintf (LOG_VERBOSE, "=%s",
+        logprogress (LOG_VERBOSE, "=%s",
                    eta_to_human_short ((int) (dltime + 0.5), true));
       else
-        logprintf (LOG_VERBOSE, "=%ss", print_decimal (dltime));
+        logprogress (LOG_VERBOSE, "=%ss", print_decimal (dltime));
     }
 }
 
@@ -353,12 +353,12 @@ dot_update (void *progress, wgint howmuch, double dltime)
   for (; dp->accumulated >= dot_bytes; dp->accumulated -= dot_bytes)
     {
       if (dp->dots == 0)
-        logprintf (LOG_VERBOSE, "\n%6sK",
+        logprogress (LOG_VERBOSE, "\n%6sK",
                    number_to_static_string (dp->rows * ROW_BYTES / 1024));
 
       if (dp->dots % opt.dot_spacing == 0)
-        logputs (LOG_VERBOSE, " ");
-      logputs (LOG_VERBOSE, ".");
+        logprogress (LOG_VERBOSE, " ");
+      logprogress (LOG_VERBOSE, ".");
 
       ++dp->dots;
       if (dp->dots >= opt.dots_in_line)
@@ -385,17 +385,17 @@ dot_finish (void *progress, double dltime)
   log_set_flush (false);
 
   if (dp->dots == 0)
-    logprintf (LOG_VERBOSE, "\n%6sK",
+    logprogress (LOG_VERBOSE, "\n%6sK",
                number_to_static_string (dp->rows * ROW_BYTES / 1024));
   for (i = dp->dots; i < opt.dots_in_line; i++)
     {
       if (i % opt.dot_spacing == 0)
-        logputs (LOG_VERBOSE, " ");
-      logputs (LOG_VERBOSE, " ");
+        logprogress (LOG_VERBOSE, " ");
+      logprogress (LOG_VERBOSE, " ");
     }
 
   print_row_stats (dp, dltime, true);
-  logputs (LOG_VERBOSE, "\n\n");
+  logprogress (LOG_VERBOSE, "\n\n");
   log_set_flush (false);
 
   xfree (dp);
@@ -581,7 +581,7 @@ bar_create (wgint initial, wgint total)
    * for multibyte characters. */
   bp->buffer = xmalloc (bp->width + 100);
 
-  logputs (LOG_VERBOSE, "\n");
+  logprogress (LOG_VERBOSE, "\n");
 
   create_image (bp, 0, false);
   display_image (bp->buffer);
@@ -650,7 +650,7 @@ bar_finish (void *progress, double dltime)
   create_image (bp, dltime, true);
   display_image (bp->buffer);
 
-  logputs (LOG_VERBOSE, "\n\n");
+  logprogress (LOG_VERBOSE, "\n\n");
 
   xfree (bp->buffer);
   xfree (bp);
@@ -1070,8 +1070,8 @@ static void
 display_image (char *buf)
 {
   bool old = log_set_save_context (false);
-  logputs (LOG_VERBOSE, "\r");
-  logputs (LOG_VERBOSE, buf);
+  logprogress (LOG_VERBOSE, "\r");
+  logprogress (LOG_VERBOSE, buf);
   log_set_save_context (old);
 }
 
diff --git a/src/retr.c b/src/retr.c
index 5f33c7a..935ea2d 100644
--- a/src/retr.c
+++ b/src/retr.c
@@ -259,7 +259,7 @@ fd_read_body (int fd, FILE *out, wgint toread, wgint 
startpos,
   if (flags & rb_skip_startpos)
     skip = startpos;
 
-  if (opt.verbose)
+  if (opt.verbose || opt.progress)
     {
       /* If we're skipping STARTPOS bytes, pass 0 as the INITIAL
          argument to progress_create because the indicator doesn't
-- 
1.7.3.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]