Skip to content
Snippets Groups Projects
Commit 2b2b8518 authored by Olivier Fourdan's avatar Olivier Fourdan
Browse files

Cleanup/simplification

(Old svn revision: 10897)
parent 157eab5d
No related branches found
No related tags found
No related merge requests found
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
#endif #endif
#include <unistd.h> #include <unistd.h>
#include <signal.h>
#include <sys/types.h> #include <sys/types.h>
#include <signal.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gdk/gdk.h> #include <gdk/gdk.h>
...@@ -222,7 +222,7 @@ static int initialize(int argc, char **argv) ...@@ -222,7 +222,7 @@ static int initialize(int argc, char **argv)
if(!initEventFilter(MAIN_EVENT_MASK, NULL, "xfwm")) if(!initEventFilter(MAIN_EVENT_MASK, NULL, "xfwm"))
{ {
return (-1); return -1;
} }
pushEventFilter(xfwm4_event_filter, NULL); pushEventFilter(xfwm4_event_filter, NULL);
...@@ -230,7 +230,7 @@ static int initialize(int argc, char **argv) ...@@ -230,7 +230,7 @@ static int initialize(int argc, char **argv)
if(!initSettings()) if(!initSettings())
{ {
return (-2); return -2;
} }
act.sa_handler = handleSignal; act.sa_handler = handleSignal;
...@@ -264,32 +264,52 @@ static int initialize(int argc, char **argv) ...@@ -264,32 +264,52 @@ static int initialize(int argc, char **argv)
g_object_unref(G_OBJECT(layout)); g_object_unref(G_OBJECT(layout));
clientFrameAll(); 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) for(i = 1; i < argc; i++)
{
pid_t ppid;
int status = initialize(argc, argv);
if(daemon_mode)
{ {
ppid = getppid(); if(!strcmp(argv[i], "--daemon"))
kill(ppid, SIGUSR1); {
daemon_mode = TRUE;
}
} }
status = initialize(argc, argv);
switch (status) switch (status)
{ {
case -1: case -1:
g_error(_("%s: Another Window Manager is already running"), g_get_prgname()); g_error(_("%s: Another Window Manager is already running"), g_get_prgname());
break; break;
case -2: case -2:
g_error(_("%s: Missing data from default files"), g_get_prgname()); g_error(_("%s: Missing data from default files"), g_get_prgname());
break; break;
case 0: 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; break;
default: default:
g_error(_("%s: Unknown error occured"), g_get_prgname()); g_error(_("%s: Unknown error occured"), g_get_prgname());
...@@ -299,45 +319,3 @@ int run_daemon(int argc, char **argv, gboolean daemon_mode) ...@@ -299,45 +319,3 @@ int run_daemon(int argc, char **argv, gboolean daemon_mode)
g_message(_("%s: Terminated\n"), g_get_prgname()); g_message(_("%s: Terminated\n"), g_get_prgname());
return 0; 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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment