X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/0f78b81511be65d8fe21af1e6ac674f9e80ac29d..2cd421d80978b9a1ab7ec0bd0eca50c03ef38a33:/cleanup.c diff --git a/cleanup.c b/cleanup.c index 1acc348a..9cf7be0f 100644 --- a/cleanup.c +++ b/cleanup.c @@ -16,17 +16,20 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "rsync.h" +extern int am_server; +extern int am_daemon; extern int io_error; extern int keep_partial; extern int log_got_error; extern char *partial_dir; +extern char *logfile_name; #ifdef HAVE_SIGACTION static struct sigaction sigact; @@ -118,7 +121,7 @@ void _exit_cleanup(int code, const char *file, int line) } } - if (cleanup_got_literal && cleanup_fname && keep_partial + if (cleanup_got_literal && cleanup_new_fname && keep_partial && handle_partial_dir(cleanup_new_fname, PDIR_CREATE)) { char *fname = cleanup_fname; cleanup_fname = NULL; @@ -151,7 +154,7 @@ void _exit_cleanup(int code, const char *file, int line) code = RERR_PARTIAL; } - if (code) + if (code || am_daemon || (logfile_name && (am_server || !verbose))) log_exit(code, file, line); if (verbose > 2) { @@ -165,7 +168,7 @@ void _exit_cleanup(int code, const char *file, int line) void cleanup_disable(void) { - cleanup_fname = NULL; + cleanup_fname = cleanup_new_fname = NULL; cleanup_got_literal = 0; } @@ -173,8 +176,8 @@ void cleanup_disable(void) void cleanup_set(char *fnametmp, char *fname, struct file_struct *file, int fd_r, int fd_w) { - cleanup_fname = fname ? fnametmp : NULL; - cleanup_new_fname = fname; + cleanup_fname = fnametmp; + cleanup_new_fname = fname; /* can be NULL on a partial-dir failure */ cleanup_file = file; cleanup_fd_r = fd_r; cleanup_fd_w = fd_w;