Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
progress: no progress in background
author
Luke Mewburn
<luke@mewburn.net>
Mon, 13 Apr 2015 13:30:51 +0000
(23:30 +1000)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 15 Apr 2015 18:50:24 +0000
(11:50 -0700)
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>
progress.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
4e6d207
)
diff --git
a/progress.c
b/progress.c
index 412e6b1ecc36e8bd8b7f090b7da3dcf0c7e4e5bd..43d9228378858d91f759acd7dbdbcade4de7b46b 100644
(file)
--- a/
progress.c
+++ b/
progress.c
@@
-72,6
+72,11
@@
static void clear_progress_signal(void)
progress_update = 0;
}
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;
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;
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) {
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;
}
progress_update = 0;
return 1;
}