diff options
| author | William Jon McCann <mccann@jhu.edu> | 2007-04-03 11:42:43 -0400 | 
|---|---|---|
| committer | William Jon McCann <mccann@jhu.edu> | 2007-04-03 11:42:43 -0400 | 
| commit | 80dc652115e275a95b05bb6809825cc324d9475a (patch) | |
| tree | 4981625e90286e7860f63544eb9942367fe208fe /src/main.c | |
| parent | 02b7dac1de29b7e323d9457f14b639582d0a2e04 (diff) | |
add a glib message to syslog handler
Also add ability to toggle debugging when SIGUSR1 is
received.
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 66 | 
1 files changed, 59 insertions, 7 deletions
@@ -23,6 +23,7 @@  #include <stdlib.h>  #include <stdio.h>  #include <unistd.h> +#include <signal.h>  #include <errno.h>  #include <string.h>  #include <sys/types.h> @@ -38,7 +39,7 @@  #include <dbus/dbus-glib-lowlevel.h>  #include "ck-manager.h" -#include "ck-debug.h" +#include "ck-log.h"  #define CK_DBUS_NAME         "org.freedesktop.ConsoleKit" @@ -172,7 +173,7 @@ bus_reconnect (CkManager *manager)                            G_CALLBACK (bus_proxy_destroyed_cb),                            manager); -        ck_debug ("Successfully reconnected to D-Bus"); +        g_debug ("Successfully reconnected to D-Bus");          ret = FALSE; @@ -184,7 +185,7 @@ static void  bus_proxy_destroyed_cb (DBusGProxy *bus_proxy,                          CkManager  *manager)  { -        ck_debug ("Disconnected from D-Bus"); +        g_debug ("Disconnected from D-Bus");          g_object_unref (manager);          manager = NULL; @@ -198,6 +199,58 @@ delete_pid (void)          unlink (CONSOLE_KIT_PID_FILE);  } +/* copied from nautilus */ +static int debug_log_pipes[2]; + +static gboolean +debug_log_io_cb (GIOChannel  *io, +                 GIOCondition condition, +                 gpointer     data) +{ +        char a; + +        while (read (debug_log_pipes[0], &a, 1) != 1) +                ; + +        ck_log_toggle_debug (); + +        return TRUE; +} + +static void +sigusr1_handler (int sig) +{ +        while (write (debug_log_pipes[1], "a", 1) != 1) +                ; +} + +static void +setup_debug_log_signals (void) +{ +        struct sigaction sa; +        GIOChannel      *io; + +        if (pipe (debug_log_pipes) == -1) { +                g_error ("Could not create pipe() for debug log"); +        } + +        io = g_io_channel_unix_new (debug_log_pipes[0]); +        g_io_add_watch (io, G_IO_IN, debug_log_io_cb, NULL); + +        sa.sa_handler = sigusr1_handler; +        sigemptyset (&sa.sa_mask); +        sa.sa_flags = 0; +        sigaction (SIGUSR1, &sa, NULL); +} + +static void +setup_debug_log (gboolean debug) +{ +        ck_log_init (); +        ck_log_set_debug (debug); +        setup_debug_log_signals (); +} +  int  main (int    argc,        char **argv) @@ -235,6 +288,8 @@ main (int    argc,          g_option_context_parse (context, &argc, &argv, NULL);          g_option_context_free (context); +        setup_debug_log (debug); +          connection = get_system_bus ();          if (connection == NULL) {                  goto out; @@ -251,9 +306,7 @@ main (int    argc,                  goto out;          } -        /* debug to a file if in deamon mode */ -        ck_debug_init (debug, ! no_daemon); -        ck_debug ("initializing console-kit-daemon %s", VERSION); +        g_debug ("initializing console-kit-daemon %s", VERSION);          if (! no_daemon && daemon (0, 0)) {                  g_error ("Could not daemonize: %s", g_strerror (errno)); @@ -299,4 +352,3 @@ main (int    argc,          return ret;  } -  | 
