Skip to content

Commit

Permalink
progress: no progress in background
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Luke Mewburn authored and Junio C Hamano committed Apr 15, 2015
1 parent 4e6d207 commit 85cb890
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions progress.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
Expand Down

0 comments on commit 85cb890

Please sign in to comment.