X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/91fd15b8b654a3be886069510d85064d59ca5dc7..f303b749f2843433c9acd8218a4b9096d0d1bb8d:/rsync.c diff --git a/rsync.c b/rsync.c index e1c061c9..21f5288f 100644 --- a/rsync.c +++ b/rsync.c @@ -48,6 +48,8 @@ extern int flist_eof; extern int msgs2stderr; extern int keep_dirlinks; extern int make_backups; +extern int delete_during; +extern int check_for_io_err; extern struct file_list *cur_flist, *first_flist, *dir_flist; extern struct chmod_mode_struct *daemon_chmod_modes; #ifdef ICONV_OPTION @@ -252,8 +254,15 @@ int read_ndx_and_attrs(int f_in, int *iflag_ptr, uchar *type_ptr, while (1) { ndx = read_ndx(f_in); - if (ndx >= 0) + if (ndx >= 0) { + if (check_for_io_err) { + /* Let generator know there was no I/O error. */ + send_msg_int(MSG_IO_ERROR, 0); + check_for_io_err = 0; + } break; + } + check_for_io_err = 0; if (ndx == NDX_DONE) return ndx; if (!inc_recurse || am_sender) @@ -287,6 +296,10 @@ int read_ndx_and_attrs(int f_in, int *iflag_ptr, uchar *type_ptr, stop_flist_forward(); if (!msgs2stderr) negate_output_levels(); /* restore info/debug output */ + /* If the sender is going to send us an MSG_IO_ERROR value, it + * will always be the very next message following a file list. */ + if (delete_during) + check_for_io_err = 1; } iflags = protocol_version >= 29 ? read_shortint(f_in)