Thanks, Christian.
I made a few tests (on Linux) with --progress=bar, ctrl-z + 'bg'. Than put
wget to foreground again with 'fg'. Doing it again and again with a good user
experience from my side.
A very short and elegant patch !
If nobody complains, I'll push it.
Regards, Tim
On Tuesday 08 September 2015 16:29:18 Christian Neukirchen wrote:
> 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?