- Use the renamed stdout_format_has_i, stdout_format_has_o_or_i, and
[rsync/rsync.git] / generator.c
index c11672f..8bdabde 100644 (file)
@@ -27,7 +27,7 @@ extern int verbose;
 extern int dry_run;
 extern int do_xfers;
 extern int log_format_has_i;
-extern int daemon_log_format_has_i;
+extern int logfile_format_has_i;
 extern int am_root;
 extern int am_server;
 extern int am_daemon;
@@ -607,14 +607,13 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                         int maybe_ATTRS_REPORT, enum logcode code)
 {
        int save_ignore_times = ignore_times;
-       int save_size_only = size_only;
        int best_match = -1;
        int match_level = 0;
        int j = 0;
 
-       /* We can't let these send-affecting options affect our checking
-        * for identical files in the alternate basis dirs. */
-       ignore_times = size_only = 0;
+       /* We can't let ignore_times affect the unchanged_file() test in
+        * an alternate-dest dir or we will never find any matches. */
+       ignore_times = 0;
 
        do {
                pathjoin(cmpbuf, MAXPATHLEN, basis_dir[j], fname);
@@ -634,7 +633,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                case 2:
                        if (!unchanged_attrs(file, stp))
                                continue;
-                       if (always_checksum
+                       if (always_checksum && preserve_times
                         && cmp_time(stp->st_mtime, file->modtime))
                                continue;
                        best_match = j;
@@ -645,7 +644,6 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
        } while (basis_dir[++j] != NULL);
 
        ignore_times = save_ignore_times;
-       size_only = save_size_only;
 
        if (!match_level)
                return -1;
@@ -672,7 +670,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                if (itemizing)
                        itemize(file, ndx, 0, stp, 0, 0, NULL);
                if (verbose > 1 && maybe_ATTRS_REPORT) {
-                       code = daemon_log_format_has_i || dry_run
+                       code = logfile_format_has_i || dry_run
                             ? FCLIENT : FINFO;
                        rprintf(code, "%s is uptodate\n", fname);
                }
@@ -694,7 +692,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                if (maybe_ATTRS_REPORT
                 && ((!itemizing && verbose && match_level == 2)
                  || (verbose > 1 && match_level == 3))) {
-                       code = daemon_log_format_has_i || dry_run
+                       code = logfile_format_has_i || dry_run
                             ? FCLIENT : FINFO;
                        rprintf(code, "%s%s\n", fname,
                                match_level == 3 ? " is uptodate" : "");
@@ -770,7 +768,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
                        itemize(file, ndx, 0, &st, changes, 0, lp);
                }
                if (verbose > 1 && maybe_ATTRS_REPORT) {
-                       code = daemon_log_format_has_i || dry_run
+                       code = logfile_format_has_i || dry_run
                             ? FCLIENT : FINFO;
                        rprintf(code, "%s is uptodate\n", fname);
                }
@@ -1339,9 +1337,9 @@ void generate_files(int f_out, struct file_list *flist, char *local_name)
        if (protocol_version >= 29) {
                itemizing = 1;
                maybe_ATTRS_REPORT = log_format_has_i ? 0 : ATTRS_REPORT;
-               code = daemon_log_format_has_i ? 0 : FLOG;
+               code = logfile_format_has_i ? 0 : FLOG;
        } else if (am_daemon) {
-               itemizing = daemon_log_format_has_i && do_xfers;
+               itemizing = logfile_format_has_i && do_xfers;
                maybe_ATTRS_REPORT = ATTRS_REPORT;
                code = itemizing || !do_xfers ? FCLIENT : FINFO;
        } else if (!am_server) {