]>
jfr.im git - irc/quakenet/newserv.git/blob - core/main.c
1 #include "../lib/sstring.h"
18 void siginthandler(int sig
);
19 void sigusr1handler(int sig
);
20 void sigsegvhandler(int sig
);
21 void sighuphandler(int sig
);
22 void handlecore(void);
23 void handlesignals(void);
25 int newserv_shutdown_pending
;
26 static int newserv_sigusr1_pending
, newserv_sighup_pending
;
27 static void (*oldsegv
)(int);
29 int main(int argc
, char **argv
) {
42 initconfig("newserv.conf");
45 /* Loading the modules will bring in the bulk of the code */
47 signal(SIGINT
, siginthandler
);
48 signal(SIGUSR1
, sigusr1handler
);
49 signal(SIGHUP
, sighuphandler
);
50 oldsegv
= signal(SIGSEGV
, sigsegvhandler
);
55 doscheduledevents(time(NULL
));
57 if (newserv_shutdown_pending
) {
71 void handlesignals(void) {
72 if (newserv_sigusr1_pending
) {
73 signal(SIGUSR1
, sigusr1handler
);
74 Error("core", ERR_INFO
, "SIGUSR1 received.");
75 triggerhook(HOOK_CORE_SIGUSR1
, NULL
);
76 newserv_sigusr1_pending
=0;
79 if (newserv_sighup_pending
) {
80 signal(SIGHUP
, sighuphandler
);
81 Error("core", ERR_INFO
, "SIGHUP received, rehashing...");
82 triggerhook(HOOK_CORE_REHASH
, (void *)1);
83 newserv_sighup_pending
=0;
88 * seed the pseudo-random number generator, rand()
93 gettimeofday(&t
, NULL
);
97 void siginthandler(int sig
) {
98 newserv_shutdown_pending
= 1;
101 void sigusr1handler(int sig
) {
102 newserv_sigusr1_pending
= 1;
105 void sighuphandler(int sig
) {
106 newserv_sighup_pending
= 1;
109 void sigsegvhandler(int sig
) {