Try to fix ctype issues by always calling these functions as
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index 86eca2c..37c4618 100644 (file)
--- a/main.c
+++ b/main.c
@@ -23,8 +23,7 @@
 
 time_t starttime = 0;
 
-struct stats stats;
-
+extern struct stats stats;
 extern int verbose;
 
 static void show_malloc_stats(void);
@@ -493,9 +492,10 @@ static void do_server_recv(int f_in, int f_out, int argc,char *argv[])
 }
 
 
-void child_main(int argc, char *argv[])
+int child_main(int argc, char *argv[])
 {
        start_server(STDIN_FILENO, STDOUT_FILENO, argc, argv);
+       return 0;
 }
 
 
@@ -667,8 +667,6 @@ static int start_client(int argc, char *argv[])
        extern int am_sender;
        extern char *shell_cmd;
        extern int rsync_port;
-       extern int whole_file;
-       extern int write_batch;
        extern int read_batch;
        int rc;
 
@@ -817,13 +815,32 @@ static RETSIGTYPE sigchld_handler(int UNUSED(val)) {
  * Solaris?)  Can we be more portable?
  **/
 #ifdef MAINTAINER_MODE
+const char *get_panic_action(void)
+{
+       const char *cmd_fmt = getenv("RSYNC_PANIC_ACTION");
+
+       if (cmd_fmt)
+               return cmd_fmt;
+       else
+               return "xterm -display :0 -T Panic -n Panic "
+                       "-e gdb /proc/%d/exe %d";
+}
+
+
+/**
+ * Handle a fatal signal by launching a debugger, controlled by $RSYNC_PANIC_ACTION.
+ *
+ * This signal handler is only installed if we were configured with
+ * --enable-maintainer-mode.  Perhaps it should always be on and we
+ * should just look at the environment variable, but I'm a bit leery
+ * of a signal sending us into a busy loop.
+ **/
 static RETSIGTYPE rsync_panic_handler(int UNUSED(whatsig))
 {
        char cmd_buf[300];
        int ret;
-       sprintf(cmd_buf, 
-               "xterm -display :0 -T Panic -n Panic "
-               "-e gdb /proc/%d/exe %d", 
+
+       sprintf(cmd_buf, get_panic_action(),
                getpid(), getpid());
 
        /* Unless we failed to execute gdb, we allow the process to