diff options
-rw-r--r-- | .inspircd.inc | 2 | ||||
-rw-r--r-- | include/inspircd_io.h | 30 | ||||
-rw-r--r-- | src/helperfuncs.cpp | 15 | ||||
-rw-r--r-- | src/inspircd.cpp | 15 | ||||
-rw-r--r-- | src/inspircd_io.cpp | 6 |
5 files changed, 47 insertions, 21 deletions
diff --git a/.inspircd.inc b/.inspircd.inc index cca512a97..03be874c6 100644 --- a/.inspircd.inc +++ b/.inspircd.inc @@ -91,7 +91,7 @@ sub debug { # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } # If we are still alive here.. Try starting the IRCd.. - system("gdb --command=.gdbargs --args $binpath/$executable -nofork -debug"); + system("gdb --command=.gdbargs --args $binpath/$executable -nofork -debug -nolog"); } diff --git a/include/inspircd_io.h b/include/inspircd_io.h index a9de29917..aac40337d 100644 --- a/include/inspircd_io.h +++ b/include/inspircd_io.h @@ -163,7 +163,7 @@ class ServerConfig : public classbase * overridden in the configuration file via * the <options> tag. */ - char ModPath[1024]; + char ModPath[1024]; /** The temporary directory where modules are copied */ @@ -172,7 +172,7 @@ class ServerConfig : public classbase /** The full pathname to the executable, as * given in argv[0] when the program starts. */ - char MyExecutable[1024]; + char MyExecutable[1024]; /** The file handle of the logfile. If this * value is NULL, the log file is not open, @@ -180,24 +180,42 @@ class ServerConfig : public classbase * startup (this should not happen in normal * operation!). */ - FILE *log_file; + FILE *log_file; /** If this value is true, the owner of the * server specified -nofork on the command * line, causing the daemon to stay in the * foreground. */ - bool nofork; + bool nofork; + + /** If this value if true then all log + * messages will be output, regardless of + * the level given in the config file. + * This is set with the -debug commandline + * option. + */ + bool forcedebug; + + /** If this is true then log output will be + * written to the logfile. This is the default. + * If you put -nolog on the commandline then + * the logfile will not be written. + * This is meant to be used in conjunction with + * -debug for debugging without filling up the + * hard disk. + */ + bool writelog; /** If this value is true, halfops have been * enabled in the configuration file. */ - bool AllowHalfop; + bool AllowHalfop; /** The number of seconds the DNS subsystem * will wait before timing out any request. */ - int dns_timeout; + int dns_timeout; /** The size of the read() buffer in the user * handling code, used to read data into a user's diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 034976fb7..46a85da2c 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -77,7 +77,8 @@ void log(int level, char *text, ...) va_list argsPtr; char textbuffer[MAXBUF]; - if (level < Config->LogLevel) + /* If we were given -debug we output all messages, regardless of configured loglevel */ + if ((level < Config->LogLevel) && !Config->forcedebug) return; if (TIME != LAST) @@ -95,13 +96,13 @@ void log(int level, char *text, ...) vsnprintf(textbuffer, MAXBUF, text, argsPtr); va_end(argsPtr); - if (Config->log_file) + if (Config->writelog) fprintf(Config->log_file,"%s %s\n",TIMESTR,textbuffer); - - if (Config->nofork) - { - printf("%s %s\n", TIMESTR, textbuffer); - } + } + + if (Config->nofork) + { + printf("%s %s\n", TIMESTR, textbuffer); } } diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 5d77e6d75..79a6f1976 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -171,15 +171,23 @@ InspIRCd::InspIRCd(int argc, char** argv) { Config->nofork = true; } - if (!strcmp(argv[i],"-wait")) + else if(!strcmp(argv[i],"-debug")) + { + Config->forcedebug = true; + } + else if(!strcmp(argv[i],"-nolog")) + { + Config->writelog = false; + } + else if (!strcmp(argv[i],"-wait")) { sleep(6); } - if (!strcmp(argv[i],"-nolimit")) + else if (!strcmp(argv[i],"-nolimit")) { printf("WARNING: The `-nolimit' option is deprecated, and now on by default. This behaviour may change in the future.\n"); } - if (!strcmp(argv[i],"-logfile")) + else if (!strcmp(argv[i],"-logfile")) { if (argc > i+1) { @@ -867,4 +875,3 @@ int main(int argc, char** argv) } return 0; } - diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp index 9753e182e..ddad3d388 100644 --- a/src/inspircd_io.cpp +++ b/src/inspircd_io.cpp @@ -52,8 +52,8 @@ ServerConfig::ServerConfig() *CustomVersion = *motd = *rules = *PrefixQuit = *DieValue = *DNSServer = '\0'; *OperOnlyStats = *ModPath = *MyExecutable = *DisabledCommands = *PID = '\0'; log_file = NULL; - OperSpyWhois = nofork = HideBans = HideSplits = false; - AllowHalfop = true; + forcedebug = OperSpyWhois = nofork = HideBans = HideSplits = false; + writelog = AllowHalfop = true; dns_timeout = DieDelay = 5; MaxTargets = 20; NetBufferSize = 10240; @@ -1320,7 +1320,7 @@ bool ServerConfig::ConfValueBool(ConfigDataHash &target, const std::string &tag, int ServerConfig::ConfValueEnum(ConfigDataHash &target, const char* tag) { - return ConfValueEnum(target, std::string(tag)); + return target.count(tag); } int ServerConfig::ConfValueEnum(ConfigDataHash &target, const std::string &tag) |