From 59d2cd5a7fd922e5e32c8fc9790c35a6343d91bc Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Tue, 15 Apr 2008 08:39:59 -0700 Subject: [PATCH] When running in --progress mode with a progress message active, the client now outputs a newline prior to an error message, which avoids overwriting the active file's last progress line. --- cleanup.c | 4 ++++ progress.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cleanup.c b/cleanup.c index e59565da..c0596413 100644 --- 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", diff --git a/progress.c b/progress.c index d614806d..1d3659e7 100644 --- a/progress.c +++ b/progress.c @@ -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); } -- 2.34.1