This commit is contained in:
Pierre Pronchery 2005-09-14 07:47:32 +00:00
parent 1b47027612
commit c364cff1e5

View File

@ -3,27 +3,73 @@
#include <System.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <stdio.h>
/* Init */
static int _init_error(char * message, int ret);
static int _init_init(void);
static int _init(void)
{
Event * event;
AppServer * appserver;
if((event = event_new()) == NULL)
if(_init_init() != 0)
return 1;
if((appserver = appserver_new_event("Init", event)) == NULL)
if((event = event_new()) == NULL)
return _init_error("Event", 1);
if((appserver = appserver_new_event("Session", ASO_LOCAL, event))
== NULL)
{
_init_error("AppServer", 1);
event_delete(event);
return 1;
}
for(;;)
event_loop(event);
appserver_delete(appserver);
event_delete(event);
return 0;
}
static int _init_error(char * message, int ret)
/* FIXME should use other means to report errors */
{
fprintf(stderr, "%s", "Init: ");
perror(message);
return ret;
}
static void _init_sighandler(int signum);
static int _init_init(void)
{
struct sigaction sa;
sa.sa_handler = _init_sighandler;
sigfillset(&sa.sa_mask);
if(sigaction(SIGCHLD, &sa, NULL) == -1
|| sigaction(SIGHUP, &sa, NULL) == -1)
return _init_error("sigaction", 1);
return 0;
}
static void _init_sighandler(int signum)
{
switch(signum)
{
case SIGCHLD:
if(waitpid(-1, NULL, WNOHANG) == -1)
_init_error("waitpid", 0);
break;
case SIGHUP:
/* FIXME reload configuration? */
break;
}
}
/* usage */
static int _init_usage(void)