summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.inspircd.inc2
-rw-r--r--include/inspircd_io.h30
-rw-r--r--src/helperfuncs.cpp15
-rw-r--r--src/inspircd.cpp15
-rw-r--r--src/inspircd_io.cpp6
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)