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

Reply via email to