X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/3d7cc5710d5c1d6f25c0b3369411367e4870b542..ac98cd98e361d7703a9e8411aa7102613a6fb025:/cleanup.c diff --git a/cleanup.c b/cleanup.c index 8d490ef8..b952cff0 100644 --- a/cleanup.c +++ b/cleanup.c @@ -26,6 +26,10 @@ extern int keep_partial; extern int log_got_error; extern char *partial_dir; +#ifdef HAVE_SIGACTION +static struct sigaction sigact; +#endif + /** * Close all open sockets and files, allowing a (somewhat) graceful * shutdown() of socket connections. This eliminates the abortive @@ -94,17 +98,18 @@ void _exit_cleanup(int code, const char *file, int line) } inside_cleanup++; - signal(SIGUSR1, SIG_IGN); - signal(SIGUSR2, SIG_IGN); + SIGACTION(SIGUSR1, SIG_IGN); + SIGACTION(SIGUSR2, SIG_IGN); if (verbose > 3) { rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): entered\n", - code, safe_fname(file), line); + code, file, line); } if (cleanup_child_pid != -1) { int status; - if (waitpid(cleanup_child_pid, &status, WNOHANG) == cleanup_child_pid) { + if (wait_process(cleanup_child_pid, &status, WNOHANG) + == cleanup_child_pid) { status = WEXITSTATUS(status); if (status > code) code = status; @@ -121,8 +126,8 @@ void _exit_cleanup(int code, const char *file, int line) flush_write_file(cleanup_fd_w); close(cleanup_fd_w); } - finish_transfer(cleanup_new_fname, fname, cleanup_file, 0, - !partial_dir); + finish_transfer(cleanup_new_fname, fname, NULL, + cleanup_file, 0, !partial_dir); } io_flush(FULL_FLUSH); if (cleanup_fname) @@ -149,7 +154,7 @@ void _exit_cleanup(int code, const char *file, int line) if (verbose > 2) { rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): about to call exit(%d)\n", - ocode, safe_fname(file), line, code); + ocode, file, line, code); } close_all();