diff options
Diffstat (limited to 'daemon/session-worker-main.c')
-rw-r--r-- | daemon/session-worker-main.c | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/daemon/session-worker-main.c b/daemon/session-worker-main.c deleted file mode 100644 index 2a52e03c..00000000 --- a/daemon/session-worker-main.c +++ /dev/null @@ -1,180 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- - * - * Copyright (C) 2007 William Jon McCann <mccann@jhu.edu> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#include "config.h" - -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> -#include <errno.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <signal.h> -#include <locale.h> - -#include <glib.h> -#include <glib/gi18n.h> -#include <glib-object.h> - -#define DBUS_API_SUBJECT_TO_CHANGE -#include <dbus/dbus-glib.h> -#include <dbus/dbus-glib-lowlevel.h> - -#include "gdm-signal-handler.h" -#include "gdm-log.h" -#include "gdm-session-worker.h" - -#define SERVER_DBUS_PATH "/org/gnome/DisplayManager/SessionServer" -#define SERVER_DBUS_INTERFACE "org.gnome.DisplayManager.SessionServer" - -static gboolean -signal_cb (int signo, - gpointer data) -{ - int ret; - - g_debug ("Got callback for signal %d", signo); - - ret = TRUE; - - switch (signo) { - case SIGSEGV: - case SIGBUS: - case SIGILL: - case SIGABRT: - g_debug ("Caught signal %d.", signo); - - ret = FALSE; - break; - - case SIGFPE: - case SIGPIPE: - /* let the fatal signals interrupt us */ - g_debug ("Caught signal %d, shutting down abnormally.", signo); - ret = FALSE; - - break; - - case SIGINT: - case SIGTERM: - /* let the fatal signals interrupt us */ - g_debug ("Caught signal %d, shutting down normally.", signo); - ret = FALSE; - - break; - - case SIGHUP: - g_debug ("Got HUP signal"); - /* FIXME: - * Reread config stuff like system config files, VPN service files, etc - */ - ret = TRUE; - - break; - - case SIGUSR1: - g_debug ("Got USR1 signal"); - /* FIXME: - * Play with log levels or something - */ - ret = TRUE; - - break; - - default: - g_debug ("Caught unhandled signal %d", signo); - ret = TRUE; - - break; - } - - return ret; -} - -int -main (int argc, - char **argv) -{ - GMainLoop *main_loop; - GOptionContext *context; - GdmSessionWorker *worker; - GdmSignalHandler *signal_handler; - const char *address; - static GOptionEntry entries [] = { - { NULL } - }; - - bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); - textdomain (GETTEXT_PACKAGE); - setlocale (LC_ALL, ""); - - g_type_init (); - - context = g_option_context_new (_("GNOME Display Manager Session Worker")); - g_option_context_add_main_entries (context, entries, NULL); - - g_option_context_parse (context, &argc, &argv, NULL); - g_option_context_free (context); - - gdm_log_init (); - gdm_log_set_debug (TRUE); - - address = g_getenv ("GDM_SESSION_DBUS_ADDRESS"); - if (address == NULL) { - g_warning ("GDM_SESSION_DBUS_ADDRESS not set"); - exit (1); - } - - worker = gdm_session_worker_new (address); - - main_loop = g_main_loop_new (NULL, FALSE); - - signal_handler = gdm_signal_handler_new (); - gdm_signal_handler_set_main_loop (signal_handler, main_loop); - gdm_signal_handler_add (signal_handler, SIGTERM, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGINT, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGILL, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGBUS, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGFPE, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGHUP, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGSEGV, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGABRT, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL); - - g_main_loop_run (main_loop); - - if (worker != NULL) { - g_object_unref (worker); - } - - if (signal_handler != NULL) { - g_object_unref (signal_handler); - } - - g_main_loop_unref (main_loop); - - out: - - g_debug ("Worker finished"); - - return 0; -} |