X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/caff33228ec3721635f25efcbc79143c0475fc8d..d9163a4cf516682e5109457d09ce68c53be26f91:/generator.c diff --git a/generator.c b/generator.c index 80acbf07..15cd325e 100644 --- a/generator.c +++ b/generator.c @@ -50,7 +50,7 @@ extern int delete_during; extern int delete_after; extern int module_id; extern int ignore_errors; -extern int remove_sent_files; +extern int remove_source_files; extern int delay_updates; extern int update_only; extern int ignore_existing; @@ -607,15 +607,10 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx, char *cmpbuf, STRUCT_STAT *stp, int itemizing, int maybe_ATTRS_REPORT, enum logcode code) { - int save_ignore_times = ignore_times; int best_match = -1; int match_level = 0; int j = 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); if (link_stat(cmpbuf, stp, 0) < 0 || !S_ISREG(stp->st_mode)) @@ -644,8 +639,6 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx, break; } while (basis_dir[++j] != NULL); - ignore_times = save_ignore_times; - if (!match_level) return -1; @@ -664,8 +657,11 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx, itemizing && verbose > 1, code) < 0) goto try_a_copy; - if (preserve_hard_links && file->link_u.links) + if (preserve_hard_links && file->link_u.links) { + if (dry_run) + file->link_u.links->link_dest_used = j + 1; hard_link_cluster(file, ndx, itemizing, code); + } } else #endif if (itemizing) @@ -986,6 +982,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, itemizing, code); } + if (remove_source_files == 1) + goto return_with_success; return; } } @@ -1025,13 +1023,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, rprintf(code, "%s -> %s\n", fname, file->u.link); } - if (remove_sent_files && !dry_run) { - char numbuf[4]; - SIVAL(numbuf, 0, ndx); - send_msg(MSG_SUCCESS, numbuf, 4); - } if (preserve_hard_links && file->link_u.links) hard_link_cluster(file, ndx, itemizing, code); + if (remove_source_files) + goto return_with_success; } #endif return; @@ -1085,6 +1080,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, hard_link_cluster(file, ndx, itemizing, code); } + if (remove_source_files == 1) + goto return_with_success; } } else { if (itemizing) @@ -1092,6 +1089,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, set_file_attrs(fname, file, &st, maybe_ATTRS_REPORT); if (preserve_hard_links && file->link_u.links) hard_link_cluster(file, ndx, itemizing, code); + if (remove_source_files == 1) + goto return_with_success; } return; } @@ -1146,9 +1145,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, if (statret != 0 && basis_dir[0] != NULL) { int j = try_dests_reg(file, fname, ndx, fnamecmpbuf, &st, itemizing, maybe_ATTRS_REPORT, code); - if (j == -2) + if (j == -2) { + if (remove_source_files == 1) + goto return_with_success; return; - if (j != -1) { + } + if (j >= 0) { fnamecmp = fnamecmpbuf; fnamecmp_type = j; statret = 0; @@ -1213,6 +1215,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, set_file_attrs(fname, file, &st, maybe_ATTRS_REPORT); if (preserve_hard_links && file->link_u.links) hard_link_cluster(file, ndx, itemizing, code); + if (remove_source_files != 1) + return; + return_with_success: + if (!dry_run) { + char numbuf[4]; + SIVAL(numbuf, 0, ndx); + send_msg(MSG_SUCCESS, numbuf, 4); + } return; } @@ -1285,8 +1295,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, rprintf(FINFO, "generating and sending sums for %d\n", ndx); notify_others: - if (remove_sent_files && !delay_updates && !phase) - increment_active_files(ndx, itemizing, code); + if (remove_source_files && !delay_updates && !phase) + increment_active_files(ndx, itemizing, code); write_int(f_out, ndx); if (itemizing) { int iflags = ITEM_TRANSFER;