John E. Malmberg convinced me to standardize on #ifs for defined
[rsync/rsync.git] / progress.c
index da1682d..22e0955 100644 (file)
@@ -26,6 +26,12 @@ extern int am_server;
 
 #define PROGRESS_HISTORY_SECS 5
 
+#ifdef GETPGRP_VOID
+#define GETPGRP_ARG
+#else
+#define GETPGRP_ARG 0
+#endif
+
 struct progress_history {
        struct timeval time;
        OFF_T ofs;
@@ -115,10 +121,19 @@ void end_progress(OFF_T size)
 void show_progress(OFF_T ofs, OFF_T size)
 {
        struct timeval now;
+#if defined HAVE_GETPGRP && defined HAVE_TCGETPGRP
+       static pid_t pgrp = -1;
+       pid_t tc_pgrp;
+#endif
 
        if (am_server)
                return;
 
+#if defined HAVE_GETPGRP && defined HAVE_TCGETPGRP
+       if (pgrp == -1)
+               pgrp = getpgrp(GETPGRP_ARG);
+#endif
+
        gettimeofday(&now, NULL);
 
        if (!ph_start.time.tv_sec) {
@@ -150,5 +165,11 @@ void show_progress(OFF_T ofs, OFF_T size)
                ph_list[newest_hpos].ofs = ofs;
        }
 
+#if defined HAVE_GETPGRP && defined HAVE_TCGETPGRP
+       tc_pgrp = tcgetpgrp(STDOUT_FILENO);
+       if (tc_pgrp != pgrp && tc_pgrp != -1)
+               return;
+#endif
+
        rprint_progress(ofs, size, &now, False);
 }