X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/0de515756468e0b8f87f3f24ae5351aee8cd3a69..e2c1e482e004b8f992156bf436d4bf34cee1ee1d:/generator.c diff --git a/generator.c b/generator.c index 326ccd88..b8d930e6 100644 --- a/generator.c +++ b/generator.c @@ -288,7 +288,7 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev) if (allowed_lull) maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH); - if (io_error && !ignore_errors) { + if (io_error & IOERR_GENERAL && !ignore_errors) { if (already_warned) return; rprintf(FINFO, @@ -1354,6 +1354,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, } } +#ifdef SUPPORT_XATTRS + if (preserve_xattrs && statret == 1) + copy_xattrs(fnamecmpbuf, fname); +#endif + if (set_file_attrs(fname, file, real_ret ? NULL : &real_sx, NULL, 0) + && INFO_GTE(NAME, 1) && code != FNONE && f_out != -1) + rprintf(code, "%s/\n", fname); + /* We need to ensure that the dirs in the transfer have writable * permissions during the time we are putting files within them. * This is then fixed after the transfer is done. */ @@ -1369,14 +1377,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, } #endif -#ifdef SUPPORT_XATTRS - if (preserve_xattrs && statret == 1) - copy_xattrs(fnamecmpbuf, fname); -#endif - if (set_file_attrs(fname, file, real_ret ? NULL : &real_sx, NULL, 0) - && INFO_GTE(NAME, 1) && code != FNONE && f_out != -1) - rprintf(code, "%s/\n", fname); - if (real_ret != 0 && one_file_system) real_sx.st.st_dev = filesystem_dev; if (inc_recurse) {