|
|
| version 1.1.1.2, 2013/10/14 07:51:14 | version 1.1.1.3, 2016/11/01 09:54:32 |
|---|---|
| Line 3 | Line 3 |
| * | * |
| * Copyright (C) 1996 Andrew Tridgell | * Copyright (C) 1996 Andrew Tridgell |
| * Copyright (C) 1996 Paul Mackerras | * Copyright (C) 1996 Paul Mackerras |
| * Copyright (C) 2003-2013 Wayne Davison | * Copyright (C) 2003-2015 Wayne Davison |
| * | * |
| * This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by |
| Line 29 extern int inc_recurse; | Line 29 extern int inc_recurse; |
| extern int log_before_transfer; | extern int log_before_transfer; |
| extern int stdout_format_has_i; | extern int stdout_format_has_i; |
| extern int logfile_format_has_i; | extern int logfile_format_has_i; |
| extern int want_xattr_optim; | |
| extern int csum_length; | extern int csum_length; |
| extern int append_mode; | extern int append_mode; |
| extern int io_error; | extern int io_error; |
| Line 142 void successful_send(int ndx) | Line 143 void successful_send(int ndx) |
| goto failed; | goto failed; |
| } | } |
| if (st.st_size != F_LENGTH(file) || st.st_mtime != file->modtime | if (S_ISREG(file->mode) /* Symlinks & devices don't need this check: */ |
| && (st.st_size != F_LENGTH(file) || st.st_mtime != file->modtime | |
| #ifdef ST_MTIME_NSEC | #ifdef ST_MTIME_NSEC |
| || (NSEC_BUMP(file) && (uint32)st.ST_MTIME_NSEC != F_MOD_NSEC(file)) | || (NSEC_BUMP(file) && (uint32)st.ST_MTIME_NSEC != F_MOD_NSEC(file)) |
| #endif | #endif |
| ) { | )) { |
| rprintf(FERROR, "ERROR: Skipping sender remove for changed file: %s\n", fname); | rprintf(FERROR_XFER, "ERROR: Skipping sender remove for changed file: %s\n", fname); |
| return; | return; |
| } | } |
| Line 157 void successful_send(int ndx) | Line 159 void successful_send(int ndx) |
| if (errno == ENOENT) | if (errno == ENOENT) |
| rprintf(FINFO, "sender file already removed: %s\n", fname); | rprintf(FINFO, "sender file already removed: %s\n", fname); |
| else | else |
| rsyserr(FERROR, errno, "sender failed to %s %s", failed_op, fname); | rsyserr(FERROR_XFER, errno, "sender failed to %s %s", failed_op, fname); |
| } else { | } else { |
| if (INFO_GTE(REMOVE, 1)) | if (INFO_GTE(REMOVE, 1)) |
| rprintf(FINFO, "sender removed %s\n", fname); | rprintf(FINFO, "sender removed %s\n", fname); |
| Line 178 static void write_ndx_and_attrs(int f_out, int ndx, in | Line 180 static void write_ndx_and_attrs(int f_out, int ndx, in |
| write_vstring(f_out, buf, len); | write_vstring(f_out, buf, len); |
| #ifdef SUPPORT_XATTRS | #ifdef SUPPORT_XATTRS |
| if (preserve_xattrs && iflags & ITEM_REPORT_XATTR && do_xfers | if (preserve_xattrs && iflags & ITEM_REPORT_XATTR && do_xfers |
| && (protocol_version < 31 || !BITS_SET(iflags, ITEM_XNAME_FOLLOWS|ITEM_LOCAL_CHANGE))) | && !(want_xattr_optim && BITS_SET(iflags, ITEM_XNAME_FOLLOWS|ITEM_LOCAL_CHANGE))) |
| send_xattr_request(fname, file, f_out); | send_xattr_request(fname, file, f_out); |
| #endif | #endif |
| } | } |
| Line 260 void send_files(int f_in, int f_out) | Line 262 void send_files(int f_in, int f_out) |
| #ifdef SUPPORT_XATTRS | #ifdef SUPPORT_XATTRS |
| if (preserve_xattrs && iflags & ITEM_REPORT_XATTR && do_xfers | if (preserve_xattrs && iflags & ITEM_REPORT_XATTR && do_xfers |
| && (protocol_version < 31 || !BITS_SET(iflags, ITEM_XNAME_FOLLOWS|ITEM_LOCAL_CHANGE))) | && !(want_xattr_optim && BITS_SET(iflags, ITEM_XNAME_FOLLOWS|ITEM_LOCAL_CHANGE))) |
| recv_xattr_request(file, f_in); | recv_xattr_request(file, f_in); |
| #endif | #endif |
| Line 318 void send_files(int f_in, int f_out) | Line 320 void send_files(int f_in, int f_out) |
| stats.xferred_files++; | stats.xferred_files++; |
| stats.total_transferred_size += F_LENGTH(file); | stats.total_transferred_size += F_LENGTH(file); |
| if (!log_before_transfer) | remember_initial_stats(); |
| remember_initial_stats(); | |
| if (!do_xfers) { /* log the transfer */ | if (!do_xfers) { /* log the transfer */ |
| log_item(FCLIENT, file, iflags, NULL); | log_item(FCLIENT, file, iflags, NULL); |