From: Wayne Davison Date: Tue, 15 Apr 2008 15:39:59 +0000 (-0700) Subject: When running in --progress mode with a progress message active, the X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/59d2cd5a7fd922e5e32c8fc9790c35a6343d91bc 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. --- 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); }