X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/18a11cfd48482c3a65f310c7dabca2bb8615b835..78bcddcc6acf13954edc689396274bace50a59e5:/generator.c diff --git a/generator.c b/generator.c index 68289729..e3470819 100644 --- a/generator.c +++ b/generator.c @@ -149,7 +149,7 @@ static int delete_item(char *fname, int mode, int flags) full_fname(fname)); return -1; } - flags |= DEL_FORCE_RECURSE; + flags |= DEL_FORCE_RECURSE; /* mark subdir dels as not "in the way" */ dlen = strlcpy(buf, fname, MAXPATHLEN); save_filters = push_local_filters(buf, dlen); @@ -821,17 +821,20 @@ static void recv_generator(char *fname, struct file_list *flist, if (link_stat(fnamecmpbuf, &st, 0) == 0 && S_ISREG(st.st_mode)) { statret = 0; - if (link_dest) { - if (!match_level) { - fallback_match = i; - match_level = 1; - } else if (match_level == 2 - && !unchanged_attrs(file, &st)) - continue; + switch (match_level) { + case 0: + if (compare_dest) + break; + fallback_match = i; + match_level = 1; + /* FALL THROUGH */ + case 1: if (!unchanged_file(fnamecmpbuf, file, &st)) continue; fallback_match = i; match_level = 2; + /* FALL THROUGH */ + case 2: if (!unchanged_attrs(file, &st)) continue; } @@ -1075,7 +1078,7 @@ void generate_files(int f_out, struct file_list *flist, char *local_name, int need_retouch_dir_perms = 0; int save_only_existing = only_existing; int save_opt_ignore_existing = opt_ignore_existing; - int allowed_lull = read_batch ? 0 : io_timeout / 2; + int allowed_lull = read_batch ? 0 : (io_timeout + 1) / 2; int lull_mod = allowed_lull * 5; if (protocol_version >= 29) {