Tweaked an error message and a comment.
[rsync/rsync.git] / generator.c
index e80daf2..02d514c 100644 (file)
@@ -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();
        }