[Top][All Lists]
[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
- [Bug-wget] [PATCH] [BUG-33838] - A way to turn off verbosity but still have a progress bar,
Sasikantha babu <=