]> jfr.im git - irc/quakenet/newserv.git/blame - core/main.c
Use the local variables rather than the rcp members when doing chanflags
[irc/quakenet/newserv.git] / core / main.c
CommitLineData
2c5db955
CP
1#include "../lib/sstring.h"
2#include "events.h"
3#include "schedule.h"
4#include "hooks.h"
5#include "modules.h"
6#include "config.h"
7#include "error.h"
010f1c74 8#include "nsmalloc.h"
2c5db955
CP
9
10#include <stdlib.h>
11#include <stdio.h>
12#include <time.h>
13#include <sys/time.h>
88c8f330 14#include <signal.h>
2c5db955 15
83951d54 16int newserv_shutdown_pending;
b8e79109 17int newserv_sigusr1_pending;
83951d54 18
2c5db955 19void initseed();
280505a5 20void init_logfile();
88c8f330 21void siginthandler(int sig);
b8e79109 22void sigusr1handler(int sig);
2c5db955
CP
23
24int main(int argc, char **argv) {
25 initseed();
26 inithooks();
27 inithandlers();
28 initschedule();
280505a5 29
30 init_logfile();
2c5db955
CP
31
32 initsstring();
33
34 if (argc>1) {
35 initconfig(argv[1]);
36 } else {
37 initconfig("newserv.conf");
38 }
39
40 /* Loading the modules will bring in the bulk of the code */
41 initmodules();
88c8f330 42 signal(SIGINT, siginthandler);
b8e79109 43 signal(SIGUSR1, sigusr1handler);
2c5db955
CP
44
45 /* Main loop */
46 for(;;) {
47 handleevents(10);
48 doscheduledevents(time(NULL));
83951d54 49 if (newserv_shutdown_pending) {
50 newserv_shutdown();
51 break;
52 }
b8e79109 53
54 if (newserv_sigusr1_pending) {
4eb459df 55 signal(SIGUSR1, sigusr1handler);
b8e79109 56 triggerhook(HOOK_CORE_SIGUSR1, NULL);
57 newserv_sigusr1_pending=0;
58 }
2c5db955 59 }
707c5824 60
103521a1 61 nsexit();
707c5824
CP
62
63 freeconfig();
64 finisstring();
2c5db955
CP
65}
66
67/*
68 * seed the pseudo-random number generator, rand()
69 */
70void initseed() {
71 struct timeval t;
72
73 gettimeofday(&t, NULL);
74 srand(t.tv_usec);
75}
88c8f330
CP
76
77void siginthandler(int sig) {
78 newserv_shutdown_pending = 1;
79}
b8e79109 80
81void sigusr1handler(int sig) {
82 newserv_sigusr1_pending = 1;
83}