Hi,
Sometimes I start wget, but the remote site is too slow, so I rather
want to run it in background, however when I simply use job control
for that, wget will keep spewing the progress bar all over my
terminal. I have found the SIGHUP/SIGUSR1 feature to redirect output
to a log file, but I think the following small patch is even more
useful, since the progress bar will simply resume when wget is
foregrounded again (also, the final message is still printed to the
terminal in any case):
--- src/progress.c
+++ src/progress.c
@@ -1179,10 +1179,12 @@ create_image (struct bar_progress *bp, double
dl_total_time, bool done)
static void
display_image (char *buf)
{
- bool old = log_set_save_context (false);
- logputs (LOG_PROGRESS, "\r");
- logputs (LOG_PROGRESS, buf);
- log_set_save_context (old);
+ if (tcgetpgrp (fileno (stderr)) == getpid ()) {
+ bool old = log_set_save_context (false);
+ logputs (LOG_PROGRESS, "\r");
+ logputs (LOG_PROGRESS, buf);
+ log_set_save_context (old);
+ }
}
static void
This probably needs some guards for portability to all platforms.
Only tested on Linux 4.1 so far.
Opinions?
--
Christian Neukirchen <[email protected]> http://chneukirchen.org