summaryrefslogtreecommitdiff
path: root/progress.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2005-01-25 17:16:13 +0000
committerWayne Davison <wayned@samba.org>2005-01-25 17:16:13 +0000
commitd6a3e37b83d71d79d43396beb7da7643e08f4fa0 (patch)
tree4e274ace40e930c5015222e14a026fba27da2895 /progress.c
parent8261047b1e03208ce09a58684c06e775e7146878 (diff)
downloadrsync-d6a3e37b83d71d79d43396beb7da7643e08f4fa0.tar.gz
If rsync is put in the background, output fewer progress-report
lines.
Diffstat (limited to 'progress.c')
-rw-r--r--progress.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/progress.c b/progress.c
index da1682da..0cb5060a 100644
--- a/progress.c
+++ b/progress.c
@@ -115,10 +115,24 @@ void end_progress(OFF_T size)
void show_progress(OFF_T ofs, OFF_T size)
{
struct timeval now;
+#if HAVE_GETPGRP && HAVE_TCGETPGRP
+ static pid_t pgrp = -1;
+ pid_t tc_pgrp;
+#endif
if (am_server)
return;
+#if HAVE_GETPGRP && HAVE_TCGETPGRP
+ if (pgrp == -1) {
+# if GETPGRP_VOID
+ pgrp = getpgrp();
+# else
+ pgrp = getpgrp(0);
+# endif
+ }
+#endif
+
gettimeofday(&now, NULL);
if (!ph_start.time.tv_sec) {
@@ -150,5 +164,11 @@ void show_progress(OFF_T ofs, OFF_T size)
ph_list[newest_hpos].ofs = ofs;
}
+#if HAVE_GETPGRP && HAVE_TCGETPGRP
+ tc_pgrp = tcgetpgrp(STDOUT_FILENO);
+ if (tc_pgrp != pgrp && tc_pgrp != -1)
+ return;
+#endif
+
rprint_progress(ofs, size, &now, False);
}