From 2b2b8518dbc26cb9267bb15e796fd6608ba9ee69 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Wed, 5 Feb 2003 15:24:33 +0000 Subject: [PATCH] Cleanup/simplification (Old svn revision: 10897) --- src/main.c | 94 +++++++++++++++++++++--------------------------------- 1 file changed, 36 insertions(+), 58 deletions(-) diff --git a/src/main.c b/src/main.c index 2f52d0b77..43707c036 100644 --- a/src/main.c +++ b/src/main.c @@ -23,8 +23,8 @@ #endif #include <unistd.h> -#include <signal.h> #include <sys/types.h> +#include <signal.h> #include <gtk/gtk.h> #include <gdk/gdk.h> @@ -222,7 +222,7 @@ static int initialize(int argc, char **argv) if(!initEventFilter(MAIN_EVENT_MASK, NULL, "xfwm")) { - return (-1); + return -1; } pushEventFilter(xfwm4_event_filter, NULL); @@ -230,7 +230,7 @@ static int initialize(int argc, char **argv) if(!initSettings()) { - return (-2); + return -2; } act.sa_handler = handleSignal; @@ -264,32 +264,52 @@ static int initialize(int argc, char **argv) g_object_unref(G_OBJECT(layout)); clientFrameAll(); - return (0); + return 0; } -static void p_action(int sig) +int main(int argc, char **argv) { -} + int i; + gboolean daemon_mode = FALSE; + int status; -int run_daemon(int argc, char **argv, gboolean daemon_mode) -{ - pid_t ppid; - int status = initialize(argc, argv); - if(daemon_mode) + for(i = 1; i < argc; i++) { - ppid = getppid(); - kill(ppid, SIGUSR1); + if(!strcmp(argv[i], "--daemon")) + { + daemon_mode = TRUE; + } } + + status = initialize(argc, argv); switch (status) { case -1: g_error(_("%s: Another Window Manager is already running"), g_get_prgname()); - break; + break; case -2: g_error(_("%s: Missing data from default files"), g_get_prgname()); - break; + break; case 0: - gtk_main(); + if(daemon_mode) + { + switch (fork()) + { + case -1: + g_error("fork() failed"); + break; + case 0: /* child */ + gtk_main(); + break; + default: /* parent */ + return 0; + break; + } + } + else + { + gtk_main(); + } break; default: g_error(_("%s: Unknown error occured"), g_get_prgname()); @@ -299,45 +319,3 @@ int run_daemon(int argc, char **argv, gboolean daemon_mode) g_message(_("%s: Terminated\n"), g_get_prgname()); return 0; } - -int main(int argc, char **argv) -{ - pid_t pid; - static struct sigaction pact; - int i; - gboolean daemon_mode = FALSE; - - for(i = 1; i < argc; i++) - { - if(!strcmp(argv[i], "--daemon")) - { - daemon_mode = TRUE; - } - } - - if(daemon_mode) - { - /* set SIGUSR1 action for parent */ ; - pact.sa_handler = p_action; - sigaction(SIGUSR1, &pact, NULL); - - switch (pid = fork()) - { - case -1: - perror("fork()"); - exit(1); - break; - case 0: /* child */ - return run_daemon(argc, argv, daemon_mode); - break; - default: /* parent */ - pause(); /* wait for child signal */ - g_message(_("Init complete")); - } - } - else - { - return run_daemon(argc, argv, daemon_mode); - } - return 0; -} -- GitLab