#include "../lib/sstring.h"
+#include "../lib/valgrind.h"
#include "events.h"
#include "schedule.h"
#include "hooks.h"
#include <string.h>
#include <time.h>
#include <sys/time.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <errno.h>
#include <signal.h>
+#include <unistd.h>
void initseed();
void init_logfile();
int main(int argc, char **argv) {
char *config = "newserv.conf";
+ nsinit();
+
initseed();
inithooks();
inithandlers();
init_logfile();
- initsstring();
-
if (argc>1) {
if (strcmp(argv[1], "--help")==0) {
printf("Syntax: %s [config]\n", argv[0]);
initconfig(config);
+ /* modules can rely on this directory always being there */
+ if (mkdir("data", 0700) < 0 && errno != EEXIST) {
+ perror("mkdir");
+ return 1;
+ }
+
/* Loading the modules will bring in the bulk of the code */
initmodules();
signal(SIGINT, siginthandler);
}
freeconfig();
- finisstring();
fini_logfile();
finischedule();
nsexit();
+ if (RUNNING_ON_VALGRIND) {
+ /* We've already manually called _fini for each of the modules. Make sure
+ * it's not getting called again when the libraries are unloaded. */
+ _exit(0);
+ }
+
return 0;
}