]>
jfr.im git - irc/quakenet/newserv.git/blob - core/main.c
1 #include "../lib/sstring.h"
19 void siginthandler(int sig
);
20 void sigusr1handler(int sig
);
21 void sigsegvhandler(int sig
);
22 void sighuphandler(int sig
);
23 void handlecore(void);
24 void handlesignals(void);
26 int newserv_shutdown_pending
;
27 static int newserv_sigint_pending
, newserv_sigusr1_pending
, newserv_sighup_pending
;
28 static void (*oldsegv
)(int);
30 int main(int argc
, char **argv
) {
43 initconfig("newserv.conf");
46 /* Loading the modules will bring in the bulk of the code */
48 signal(SIGINT
, siginthandler
);
49 signal(SIGUSR1
, sigusr1handler
);
50 signal(SIGHUP
, sighuphandler
);
51 oldsegv
= signal(SIGSEGV
, sigsegvhandler
);
56 doscheduledevents(time(NULL
));
58 if (newserv_shutdown_pending
) {
76 void handlesignals(void) {
77 if (newserv_sigusr1_pending
) {
78 signal(SIGUSR1
, sigusr1handler
);
79 Error("core", ERR_INFO
, "SIGUSR1 received.");
80 triggerhook(HOOK_CORE_SIGUSR1
, NULL
);
81 newserv_sigusr1_pending
=0;
84 if (newserv_sighup_pending
) {
85 signal(SIGHUP
, sighuphandler
);
86 Error("core", ERR_INFO
, "SIGHUP received, rehashing...");
87 triggerhook(HOOK_CORE_REHASH
, (void *)1);
88 newserv_sighup_pending
=0;
91 if (newserv_sigint_pending
) {
92 Error("core", ERR_INFO
, "SIGINT received, terminating.");
93 triggerhook(HOOK_CORE_SIGINT
, NULL
);
94 newserv_sigint_pending
=0;
95 newserv_shutdown_pending
=1;
100 * seed the pseudo-random number generator, rand()
105 gettimeofday(&t
, NULL
);
109 void siginthandler(int sig
) {
110 newserv_sigint_pending
= 1;
113 void sigusr1handler(int sig
) {
114 newserv_sigusr1_pending
= 1;
117 void sighuphandler(int sig
) {
118 newserv_sighup_pending
= 1;
121 void sigsegvhandler(int sig
) {