The branch, master has been updated via 03cd1ae Handle FES_NO_SEND properly on a hard-linked file. Fixes bug 8246. from 01580c7 Fix #ifdef in unchanged_attrs(). Fixes bug 8268.
;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 03cd1ae4fadb716dd1fb67971cb82bd432988fe8 Author: Wayne Davison <way...@samba.org> Date: Mon Jul 4 16:02:12 2011 -0700 Handle FES_NO_SEND properly on a hard-linked file. Fixes bug 8246. ----------------------------------------------------------------------- Summary of changes: generator.c | 8 +++++++- io.c | 8 ++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/generator.c b/generator.c index e24f20f..631a559 100644 --- a/generator.c +++ b/generator.c @@ -2009,10 +2009,16 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo) while (1) { #ifdef SUPPORT_HARD_LINKS if (preserve_hard_links && (ndx = get_hlink_num()) != -1) { + int send_failed = (ndx == -2); + if (send_failed) + ndx = get_hlink_num(); flist = flist_for_ndx(ndx, "check_for_finished_files.1"); file = flist->files[ndx - flist->ndx_start]; assert(file->flags & FLAG_HLINKED); - finish_hard_link(file, f_name(file, fbuf), ndx, NULL, itemizing, code, -1); + if (send_failed) + handle_skipped_hlink(file, itemizing, code, sock_f_out); + else + finish_hard_link(file, f_name(file, fbuf), ndx, NULL, itemizing, code, -1); flist->in_progress--; continue; } diff --git a/io.c b/io.c index 63dff83..4fb78aa 100644 --- a/io.c +++ b/io.c @@ -1032,13 +1032,19 @@ static void got_flist_entry_status(enum festatus status, int ndx) case FES_SUCCESS: if (remove_source_files) send_msg_int(MSG_SUCCESS, ndx); + /* FALL THROUGH */ + case FES_NO_SEND: +#ifdef SUPPORT_HARD_LINKS if (preserve_hard_links) { struct file_struct *file = flist->files[ndx - flist->ndx_start]; if (F_IS_HLINKED(file)) { + if (status == FES_NO_SEND) + flist_ndx_push(&hlink_list, -2); /* indicates a failure follows */ flist_ndx_push(&hlink_list, ndx); flist->in_progress++; } } +#endif break; case FES_REDO: if (read_batch) { @@ -1050,8 +1056,6 @@ static void got_flist_entry_status(enum festatus status, int ndx) flist->to_redo++; flist_ndx_push(&redo_list, ndx); break; - case FES_NO_SEND: - break; } } -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs