X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/e7c67065c060d500eba8d073da9568db2c658aad..2873603ab5e7451ad8fd3ee75b859d709ae0378a:/cleanup.c diff --git a/cleanup.c b/cleanup.c index 8eb649e1..9cf7be0f 100644 --- a/cleanup.c +++ b/cleanup.c @@ -23,10 +23,13 @@ #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;