X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/1c3344a105f656a45f6b46e1710c3fc4ab862a9a..5463453489b58c47ea709d844ba80a1f657c3aa3:/generator.c diff --git a/generator.c b/generator.c index e80daf2b..02d514c9 100644 --- a/generator.c +++ b/generator.c @@ -598,7 +598,7 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st) /* if always checksum is set then we use the checksum instead of the file time to determine whether to sync */ if (always_checksum > 0 && S_ISREG(st->st_mode)) { - char sum[MD4_SUM_LENGTH]; + char sum[MAX_DIGEST_LEN]; file_checksum(fn, sum, st->st_size); return memcmp(sum, F_SUM(file), checksum_len) == 0; } @@ -1902,8 +1902,10 @@ void generate_files(int f_out, const char *local_name) break; } - while (!cur_flist->next && !flist_eof) { + while (1) { check_for_finished_files(itemizing, code, 1); + if (cur_flist->next || flist_eof) + break; wait_for_receiver(); } } while ((cur_flist = cur_flist->next) != NULL); @@ -1914,8 +1916,10 @@ void generate_files(int f_out, const char *local_name) if (verbose > 2) rprintf(FINFO, "generate_files phase=%d\n", phase); - while (!msgdone_cnt) { + while (1) { check_for_finished_files(itemizing, code, 1); + if (msgdone_cnt) + break; wait_for_receiver(); } @@ -1929,8 +1933,10 @@ void generate_files(int f_out, const char *local_name) write_ndx(f_out, NDX_DONE); /* Read MSG_DONE for the redo phase (and any prior messages). */ - while (msgdone_cnt <= 1) { + while (1) { check_for_finished_files(itemizing, code, 0); + if (msgdone_cnt > 1) + break; wait_for_receiver(); }