diff options
Diffstat (limited to 'net/rsync/patches/005-more-fixes-for-progress-quirks.patch')
-rw-r--r-- | net/rsync/patches/005-more-fixes-for-progress-quirks.patch | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/net/rsync/patches/005-more-fixes-for-progress-quirks.patch b/net/rsync/patches/005-more-fixes-for-progress-quirks.patch new file mode 100644 index 000000000..ee63fa7f3 --- /dev/null +++ b/net/rsync/patches/005-more-fixes-for-progress-quirks.patch @@ -0,0 +1,140 @@ +commit ff66fd4bb6cc76488c6ea1e4b651a869847f6375 +Author: Wayne Davison <wayned@samba.org> +Date: Sat Oct 29 14:47:58 2016 -0700 + + More fixes for --progress quirks. + + This patch avoids inconsistent evaluation of options in the + show_filelist_p() function by turning it into a var. We + also avoid setting "output_needs_newline" if --quiet was + specified. + +diff --git a/flist.c b/flist.c +index 4a9f4e6..54ced36 100644 +--- a/flist.c ++++ b/flist.c +@@ -37,6 +37,7 @@ extern int checksum_type; + extern int module_id; + extern int ignore_errors; + extern int numeric_ids; ++extern int quiet; + extern int recurse; + extern int use_qsort; + extern int xfer_dirs; +@@ -128,6 +129,7 @@ static char tmp_sum[MAX_DIGEST_LEN]; + + static char empty_sum[MAX_DIGEST_LEN]; + static int flist_count_offset; /* for --delete --progress */ ++static int show_filelist_progress; + + static void flist_sort_and_clean(struct file_list *flist, int strip_root); + static void output_flist(struct file_list *flist); +@@ -140,15 +142,14 @@ void init_flist(void) + } + parse_checksum_choice(); /* Sets checksum_type && xfersum_type */ + checksum_len = csum_len_for_type(checksum_type); +-} + +-static int show_filelist_p(void) +-{ +- return INFO_GTE(FLIST, 1) && xfer_dirs && !am_server && !inc_recurse; ++ show_filelist_progress = INFO_GTE(FLIST, 1) && xfer_dirs && !am_server && !inc_recurse; + } + + static void start_filelist_progress(char *kind) + { ++ if (quiet) ++ return; + rprintf(FCLIENT, "%s ... ", kind); + output_needs_newline = 1; + rflush(FINFO); +@@ -156,25 +157,28 @@ static void start_filelist_progress(char *kind) + + static void emit_filelist_progress(int count) + { +- output_needs_newline = 0; /* avoid a newline in the middle of this filelist-progress output */ ++ if (quiet) ++ return; ++ if (output_needs_newline == 2) /* avoid a newline in the middle of this filelist-progress output */ ++ output_needs_newline = 0; + rprintf(FCLIENT, " %d files...\r", count); +- output_needs_newline = 1; ++ output_needs_newline = 2; + } + + static void maybe_emit_filelist_progress(int count) + { +- if (INFO_GTE(FLIST, 2) && show_filelist_p() && (count % 100) == 0) ++ if (INFO_GTE(FLIST, 2) && show_filelist_progress && (count % 100) == 0) + emit_filelist_progress(count); + } + + static void finish_filelist_progress(const struct file_list *flist) + { ++ output_needs_newline = 0; + if (INFO_GTE(FLIST, 2)) { + /* This overwrites the progress line */ + rprintf(FINFO, "%d file%sto consider\n", + flist->used, flist->used == 1 ? " " : "s "); + } else { +- output_needs_newline = 0; + rprintf(FINFO, "done\n"); + } + } +@@ -2089,7 +2093,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) + int implied_dot_dir = 0; + + rprintf(FLOG, "building file list\n"); +- if (show_filelist_p()) ++ if (show_filelist_progress) + start_filelist_progress("building file list"); + else if (inc_recurse && INFO_GTE(FLIST, 1) && !am_server) + rprintf(FCLIENT, "sending incremental file list\n"); +@@ -2363,7 +2367,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) + idev_destroy(); + #endif + +- if (show_filelist_p()) ++ if (show_filelist_progress) + finish_filelist_progress(flist); + + gettimeofday(&end_tv, NULL); +@@ -2445,7 +2449,7 @@ struct file_list *recv_file_list(int f, int dir_ndx) + int64 start_read; + + if (!first_flist) { +- if (show_filelist_p()) ++ if (show_filelist_progress) + start_filelist_progress("receiving file list"); + else if (inc_recurse && INFO_GTE(FLIST, 1) && !am_server) + rprintf(FCLIENT, "receiving incremental file list\n"); +@@ -2541,7 +2545,7 @@ struct file_list *recv_file_list(int f, int dir_ndx) + if (DEBUG_GTE(FLIST, 2)) + rprintf(FINFO, "received %d names\n", flist->used); + +- if (show_filelist_p()) ++ if (show_filelist_progress) + finish_filelist_progress(flist); + + if (need_unsorted_flist) { +diff --git a/progress.c b/progress.c +index 3858fc4..d19fa25 100644 +--- a/progress.c ++++ b/progress.c +@@ -25,6 +25,7 @@ + + extern int am_server; + extern int flist_eof; ++extern int quiet; + extern int need_unsorted_flist; + extern int output_needs_newline; + extern struct stats stats; +@@ -127,7 +128,7 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, + pct = ofs == size ? 100 : (int) (100.0 * ofs / size); + rprintf(FCLIENT, "\r%15s %3d%% %7.2f%s %s%s", + human_num(ofs), pct, rate, units, rembuf, eol); +- if (!is_last) { ++ if (!is_last && !quiet) { + output_needs_newline = 1; + rflush(FCLIENT); + } |