X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/58a14ed95075f6fd6fbbd53edbae64a52c7dc4b2..ef20efcbb69274e423321d7ac27bfe868bca65aa:/receiver.c diff --git a/receiver.c b/receiver.c index 4c117597..b0a9ebd5 100644 --- a/receiver.c +++ b/receiver.c @@ -396,17 +396,11 @@ int recv_files(int f_in, struct file_list *flist, char *local_name, if (verbose > 2) rprintf(FINFO, "recv_files(%s)\n", safe_fname(fname)); - if (!(iflags & ITEM_UPDATING) || !S_ISREG(file->mode)) { + if (!(iflags & ITEM_TRANSFER)) { maybe_log_item(file, iflags, itemizing, fnametmp); continue; } - if (!S_ISREG(file->mode)) { - rprintf(FERROR, "[%s] got index of non-regular file: %d\n", - who_am_i(), i); - exit_cleanup(RERR_PROTOCOL); - } - stats.current_file_index = i; stats.num_transferred_files++; stats.total_transferred_size += file->length; @@ -604,14 +598,14 @@ int recv_files(int f_in, struct file_list *flist, char *local_name, cleanup_disable(); - if (recv_ok) { - if (remove_sent_files && recv_ok > 0) { + if (recv_ok > 0) { + if (remove_sent_files + || (preserve_hard_links && file->link_u.links)) { SIVAL(numbuf, 0, i); send_msg(MSG_SUCCESS, numbuf, 4); } - } else { - int msgtype = csum_length == SUM_LENGTH || read_batch ? - FERROR : FINFO; + } else if (!recv_ok) { + int msgtype = phase || read_batch ? FERROR : FINFO; if (msgtype == FERROR || verbose) { char *errstr, *redostr, *keptstr; if (!(keep_partial && partialptr) && !inplace) @@ -632,7 +626,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name, errstr, safe_fname(fname), keptstr, redostr); } - if (csum_length != SUM_LENGTH) { + if (!phase) { SIVAL(numbuf, 0, i); send_msg(MSG_REDO, numbuf, 4); } @@ -659,7 +653,9 @@ int recv_files(int f_in, struct file_list *flist, char *local_name, full_fname(fname), safe_fname(partialptr)); } else { - if (remove_sent_files) { + if (remove_sent_files + || (preserve_hard_links + && file->link_u.links)) { SIVAL(numbuf, 0, i); send_msg(MSG_SUCCESS,numbuf,4); }