Merge branch 'lm/squelch-bg-progress'
Many long-running operations show progress eye-candy, even when they are later backgrounded. Hide the eye-candy when the process is sent to the background instead. * lm/squelch-bg-progress: compat/mingw: stubs for getpgid() and tcgetpgrp() progress: no progress in background
This commit is contained in:
commit
66ff763ebb
@ -98,8 +98,6 @@ static inline unsigned int alarm(unsigned int seconds)
|
||||
{ return 0; }
|
||||
static inline int fsync(int fd)
|
||||
{ return _commit(fd); }
|
||||
static inline pid_t getppid(void)
|
||||
{ return 1; }
|
||||
static inline void sync(void)
|
||||
{}
|
||||
static inline uid_t getuid(void)
|
||||
@ -121,6 +119,12 @@ static inline int sigaddset(sigset_t *set, int signum)
|
||||
#define SIG_UNBLOCK 0
|
||||
static inline int sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
|
||||
{ return 0; }
|
||||
static inline pid_t getppid(void)
|
||||
{ return 1; }
|
||||
static inline pid_t getpgid(pid_t pid)
|
||||
{ return pid == 0 ? getpid() : pid; }
|
||||
static inline pid_t tcgetpgrp(int fd)
|
||||
{ return getpid(); }
|
||||
|
||||
/*
|
||||
* simple adaptors
|
||||
|
22
progress.c
22
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user