When running in --progress mode with a progress message active, the
authorWayne Davison <wayned@samba.org>
Tue, 15 Apr 2008 15:39:59 +0000 (08:39 -0700)
committerWayne Davison <wayned@samba.org>
Tue, 15 Apr 2008 15:50:14 +0000 (08:50 -0700)
client now outputs a newline prior to an error message, which avoids
overwriting the active file's last progress line.

cleanup.c
progress.c

index e59565d..c059641 100644 (file)
--- a/cleanup.c
+++ b/cleanup.c
@@ -27,6 +27,7 @@ extern int am_daemon;
 extern int io_error;
 extern int keep_partial;
 extern int got_xfer_error;
+extern int progress_is_active;
 extern char *partial_dir;
 extern char *logfile_name;
 
@@ -115,6 +116,9 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
 
                exit_code = unmodified_code = code;
 
+               if (progress_is_active && exit_code && !am_server)
+                       rprintf(FINFO, "\n");
+
                if (verbose > 3) {
                        rprintf(FINFO,
                                "_exit_cleanup(code=%d, file=%s, line=%d): entered\n",
index d614806..1d3659e 100644 (file)
@@ -40,6 +40,8 @@ struct progress_history {
        OFF_T ofs;
 };
 
+int progress_is_active = 0;
+
 static struct progress_history ph_start;
 static struct progress_history ph_list[PROGRESS_HISTORY_SECS];
 static int newest_hpos, oldest_hpos;
@@ -109,8 +111,11 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
                        stats.num_transferred_files,
                        stats.num_files - current_file_index - 1,
                        stats.num_files);
-       } else
+               progress_is_active = 0;
+       } else {
                strlcpy(eol, "\r", sizeof eol);
+               progress_is_active = 1;
+       }
        rprintf(FCLIENT, "%12s %3d%% %7.2f%s %s%s",
                human_num(ofs), pct, rate, units, rembuf, eol);
 }