Set a maximum distance-measure that find_fuzzy() will accept.
[rsync/rsync.git] / generator.c
index 9a27c13..6d239ba 100644 (file)
@@ -507,7 +507,7 @@ static int find_fuzzy(struct file_struct *file, struct file_list *dirlist)
 {
        int fname_len, fname_suf_len;
        const char *fname_suf, *fname = file->basename;
-       uint32 lowest_dist = 0x7FFFFFFF;
+       uint32 lowest_dist = 25 << 16; /* ignore a distance greater than 25 */
        int j, lowest_j = -1;
 
        fname_len = strlen(fname);
@@ -1223,9 +1223,18 @@ void generate_files(int f_out, struct file_list *flist, char *local_name)
 
        write_int(f_out, -1);
 
-       /* Read post-redo-phase MSG_DONE and any prior messages. */
+       /* Read MSG_DONE for the redo phase (and any prior messages). */
        get_redo_num(itemizing, code);
 
+       if (protocol_version >= 29) {
+               phase++;
+               if (verbose > 2)
+                       rprintf(FINFO, "generate_files phase=%d\n", phase);
+               write_int(f_out, -1);
+               /* Read MSG_DONE for delay-update phase & prior messages. */
+               get_redo_num(itemizing, code);
+       }
+
        if (delete_after && !local_name && flist->count > 0)
                do_delete_pass(flist);
 
@@ -1256,12 +1265,6 @@ void generate_files(int f_out, struct file_list *flist, char *local_name)
                io_error |= IOERR_DEL_LIMIT;
        }
 
-       if (protocol_version >= 29) {
-               write_int(f_out, -1);
-               /* Read post-delay-phase MSG_DONE and any prior messages. */
-               get_redo_num(itemizing, code);
-       }
-
        if (verbose > 2)
                rprintf(FINFO,"generate_files finished\n");
 }