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