]>
jfr.im git - irc/quakenet/newserv.git/blob - core/main.c
1 #include "../lib/sstring.h"
20 void siginthandler(int sig
);
21 void sigusr1handler(int sig
);
22 void sigsegvhandler(int sig
);
23 void sighuphandler(int sig
);
24 void handlecore(void);
25 void handlesignals(void);
27 int newserv_shutdown_pending
;
28 static int newserv_sigint_pending
, newserv_sigusr1_pending
, newserv_sighup_pending
;
29 static void (*oldsegv
)(int);
31 int main(int argc
, char **argv
) {
32 char *config
= "newserv.conf";
44 if (strcmp(argv
[1], "--help")==0) {
45 printf("Syntax: %s [config]\n", argv
[0]);
47 printf("Default configuration file unless specified: %s\n", config
);
57 /* Loading the modules will bring in the bulk of the code */
59 signal(SIGINT
, siginthandler
);
60 signal(SIGUSR1
, sigusr1handler
);
61 signal(SIGHUP
, sighuphandler
);
62 oldsegv
= signal(SIGSEGV
, sigsegvhandler
);
67 doscheduledevents(time(NULL
));
69 if (newserv_shutdown_pending
) {
89 void handlesignals(void) {
90 if (newserv_sigusr1_pending
) {
91 signal(SIGUSR1
, sigusr1handler
);
92 Error("core", ERR_INFO
, "SIGUSR1 received.");
93 triggerhook(HOOK_CORE_SIGUSR1
, NULL
);
94 newserv_sigusr1_pending
=0;
97 if (newserv_sighup_pending
) {
98 signal(SIGHUP
, sighuphandler
);
99 Error("core", ERR_INFO
, "SIGHUP received, rehashing...");
100 triggerhook(HOOK_CORE_REHASH
, (void *)1);
101 newserv_sighup_pending
=0;
104 if (newserv_sigint_pending
) {
105 Error("core", ERR_INFO
, "SIGINT received, terminating.");
106 triggerhook(HOOK_CORE_SIGINT
, NULL
);
107 newserv_sigint_pending
=0;
108 newserv_shutdown_pending
=1;
113 * seed the pseudo-random number generator, rand()
118 gettimeofday(&t
, NULL
);
122 void siginthandler(int sig
) {
123 newserv_sigint_pending
= 1;
126 void sigusr1handler(int sig
) {
127 newserv_sigusr1_pending
= 1;
130 void sighuphandler(int sig
) {
131 newserv_sighup_pending
= 1;
134 void sigsegvhandler(int sig
) {