If rsync is put in the background, output fewer progress-report
authorWayne Davison <wayned@samba.org>
Tue, 25 Jan 2005 17:16:13 +0000 (17:16 +0000)
committerWayne Davison <wayned@samba.org>
Tue, 25 Jan 2005 17:16:13 +0000 (17:16 +0000)
lines.

progress.c

index da1682d..0cb5060 100644 (file)
@@ -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);
 }