diff options
author | Luke Mewburn <luke@mewburn.net> | 2015-04-13 23:30:51 +1000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-04-15 11:50:24 -0700 |
commit | 85cb8906f0e9b5639230fe247d5d916db8806777 (patch) | |
tree | 35d2ceb34d4d466cce0e8ac149fd3223bb50ec13 /progress.c | |
parent | 4e6d207c45e6f5c13b38c4a200f0d3339f88ad34 (diff) | |
download | git-85cb8906f0e9b5639230fe247d5d916db8806777.tar.gz |
progress: no progress in background
Disable the display of the progress if stderr is not the
current foreground process.
Still display the final result when done.
Signed-off-by: Luke Mewburn <luke@mewburn.net>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'progress.c')
-rw-r--r-- | progress.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/progress.c b/progress.c index 412e6b1ecc..43d9228378 100644 --- a/progress.c +++ b/progress.c @@ -72,6 +72,11 @@ static void clear_progress_signal(void) progress_update = 0; } +static int is_foreground_fd(int fd) +{ + return getpgid(0) == tcgetpgrp(fd); +} + static int display(struct progress *progress, unsigned n, const char *done) { const char *eol, *tp; @@ -98,16 +103,21 @@ static int display(struct progress *progress, unsigned n, const char *done) unsigned percent = n * 100 / progress->total; if (percent != progress->last_percent || progress_update) { progress->last_percent = percent; - fprintf(stderr, "%s: %3u%% (%u/%u)%s%s", - progress->title, percent, n, - progress->total, tp, eol); - fflush(stderr); + if (is_foreground_fd(fileno(stderr)) || done) { + fprintf(stderr, "%s: %3u%% (%u/%u)%s%s", + progress->title, percent, n, + progress->total, tp, eol); + fflush(stderr); + } progress_update = 0; return 1; } } else if (progress_update) { - fprintf(stderr, "%s: %u%s%s", progress->title, n, tp, eol); - fflush(stderr); + if (is_foreground_fd(fileno(stderr)) || done) { + fprintf(stderr, "%s: %u%s%s", + progress->title, n, tp, eol); + fflush(stderr); + } progress_update = 0; return 1; } |