return name;
if (do_mkdir(name,0777 & ~orig_umask) != 0) {
- rprintf(FERROR,"mkdir %s : %s (1)\n",name,strerror(errno));
+ rprintf(FERROR, RSYNC_NAME ": mkdir %s: %s\n",
+ name, strerror(errno));
exit_cleanup(RERR_FILEIO);
} else {
if (verbose > 0)
}
if (!push_dir(name, 0)) {
- rprintf(FERROR,"push_dir %s : %s (2)\n",
- name,strerror(errno));
+ rprintf(FERROR, RSYNC_NAME ": push_dir %s: %s\n",
+ name, strerror(errno));
exit_cleanup(RERR_FILESELECT);
}
* Start a client for either type of remote connection. Work out
* whether the arguments request a remote shell or rsyncd connection,
* and call the appropriate connection function, then run_client.
+ *
+ * Calls either start_socket_client (for sockets) or do_cmd and
+ * client_run (for ssh).
*/
static int start_client(int argc, char *argv[])
{
}
-static RETSIGTYPE sigusr1_handler(int val) {
+static RETSIGTYPE sigusr1_handler(int UNUSED(val)) {
exit_cleanup(RERR_SIGNAL);
}
-static RETSIGTYPE sigusr2_handler(int val) {
+static RETSIGTYPE sigusr2_handler(int UNUSED(val)) {
extern int log_got_error;
if (log_got_error) _exit(RERR_PARTIAL);
_exit(0);
}
-static RETSIGTYPE sigchld_handler(int val) {
+static RETSIGTYPE sigchld_handler(int UNUSED(val)) {
#ifdef WNOHANG
while (waitpid(-1, NULL, WNOHANG) > 0) ;
#endif
}
signal(SIGINT,SIGNAL_CAST sig_int);
- signal(SIGPIPE,SIGNAL_CAST sig_int);
signal(SIGHUP,SIGNAL_CAST sig_int);
signal(SIGTERM,SIGNAL_CAST sig_int);
+ /* Ignore SIGPIPE; we consistently check error codes and will
+ * see the EPIPE. */
+ signal(SIGPIPE, SIG_IGN);
+
/* Initialize push_dir here because on some old systems getcwd
(implemented by forking "pwd" and reading its output) doesn't
work when there are other child processes. Also, on all systems