Hi,

Many people complain on IRC about the console client and that it does
not catch the signals.  So when you send a SIGTERM signal to the
console it does not correctly clean up its state.  The same is true
for the SIGINT signal.

This patch fixes the problem.  Marcus, can I commit this patch?

Thanks,
Marco


2004-07-14  Marco Gerards  <[EMAIL PROTECTED]>

        * console.c (sighandler): New function.
        (HANDLE_SIGNAL): New macro.
        (main): Handle the signals SIGINT and SIGTERM.


Index: console.c
===================================================================
RCS file: /cvsroot/hurd/hurd/console-client/console.c,v
retrieving revision 1.4
diff -u -p -r1.4 console.c
--- console.c   21 Mar 2004 19:57:00 -0000      1.4
+++ console.c   14 Jul 2004 20:42:58 -0000
@@ -446,6 +446,19 @@ static const struct argp_child startup_c
 static struct argp startup_argp = {options, parse_opt, 0,
                                   0, startup_children};
 
+static void
+sighandler (int sig)
+{
+  console_exit ();
+}
+
+#define HANDLE_SIGNAL(SIG)                             \
+  if (signal (SIG, sighandler))                                \
+    {                                                  \
+      driver_fini ();                                  \
+      error (1, errno, "Couldn't set signal handler"); \
+    }
+
 int
 main (int argc, char *argv[])
 {
@@ -456,7 +469,10 @@ main (int argc, char *argv[])
 
   /* Parse our command line.  This shouldn't ever return an error.  */
   argp_parse (&startup_argp, argc, argv, ARGP_IN_ORDER, 0, 0);
-
+  
+  HANDLE_SIGNAL (SIGTERM);
+  HANDLE_SIGNAL (SIGINT);
+  
   err = driver_start (&errname);
   if (err)
     error (1, err, "Starting driver %s failed", errname);



_______________________________________________
Bug-hurd mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/bug-hurd

Reply via email to