dbus-launch: clarify signal handler
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 17 Jan 2017 20:47:16 +0000 (20:47 +0000)
committerSimon McVittie <smcv@collabora.com>
Fri, 7 Apr 2017 11:07:43 +0000 (12:07 +0100)
We only register signal_handler() for the three signals that we want
to handle as "kill dbus-daemon and exit", so there's no point in the
switch. Silence -Wswitch-default by removing it altogether.

The variable name got_fatal_signal and the verbose message are both
misleading, because actually this is a handler for multiple signals,
not just SIGHUP. Rename them to be generic.

Based on part of a patch from Thomas Zimmermann.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Reviewed-by: Philip Withnall <withnall@endlessm.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=98191

tools/dbus-launch.c

index 75f39cf..910628c 100644 (file)
@@ -459,19 +459,12 @@ print_variables (const char *bus_address, pid_t bus_pid, long bus_wid,
     }
 }
 
-static int got_sighup = FALSE;
+static int got_fatal_signal = 0;
 
 static void
 signal_handler (int sig)
 {
-  switch (sig)
-    {
-    case SIGHUP:
-    case SIGINT:
-    case SIGTERM:
-      got_sighup = TRUE;
-      break;
-    }
+  got_fatal_signal = sig;
 }
 
 static void kill_bus_when_session_ends (void) _DBUS_GNUC_NORETURN;
@@ -487,7 +480,7 @@ kill_bus_when_session_ends (void)
   sigset_t empty_mask;
   
   /* install SIGHUP handler */
-  got_sighup = FALSE;
+  got_fatal_signal = 0;
   sigemptyset (&empty_mask);
   act.sa_handler = signal_handler;
   act.sa_mask    = empty_mask;
@@ -564,9 +557,10 @@ kill_bus_when_session_ends (void)
       select (MAX (tty_fd, x_fd) + 1,
               &read_set, NULL, &err_set, NULL);
 
-      if (got_sighup)
+      if (got_fatal_signal)
         {
-          verbose ("Got SIGHUP, exiting\n");
+          verbose ("Got fatal signal %d, killing dbus-daemon\n",
+                   got_fatal_signal);
           kill_bus_and_exit (0);
         }