summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/inspircd_io.h4
-rw-r--r--src/inspircd_io.cpp3
-rw-r--r--src/userprocess.cpp15
3 files changed, 14 insertions, 8 deletions
diff --git a/include/inspircd_io.h b/include/inspircd_io.h
index d89f41828..cf8e83906 100644
--- a/include/inspircd_io.h
+++ b/include/inspircd_io.h
@@ -274,6 +274,10 @@ class ServerConfig : public classbase
*/
char OperOnlyStats[MAXBUF];
+ /** The path and filename of the ircd.log file
+ */
+ std::string logpath;
+
ServerConfig();
/** Clears the include stack in preperation for
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index d685faf4e..0f4b56b55 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -29,6 +29,7 @@ using namespace std;
#include "inspircd_io.h"
#include "inspstring.h"
#include "helperfuncs.h"
+#include "userprocess.h"
#include "xline.h"
extern ServerConfig *Config;
@@ -374,6 +375,8 @@ void Killed(int status)
void Rehash(int status)
{
WriteOpers("Rehashing config file %s due to SIGHUP",CONFIG_FILE);
+ fclose(Config->log_file);
+ OpenLog(NULL,NULL);
Config->Read(false,NULL);
}
diff --git a/src/userprocess.cpp b/src/userprocess.cpp
index 0d45c1f9c..5e8887701 100644
--- a/src/userprocess.cpp
+++ b/src/userprocess.cpp
@@ -56,6 +56,7 @@ using namespace std;
#include "helperfuncs.h"
#include "hashcomp.h"
#include "socketengine.h"
+#include "userprocess.h"
#include "typedefs.h"
#include "command_parse.h"
#include "cull_list.h"
@@ -347,18 +348,16 @@ bool DoBackgroundUserStuff(time_t TIME)
void OpenLog(char** argv, int argc)
{
- std::string logpath = GetFullProgDir(argv,argc) + "/ircd.log";
- Config->log_file = fopen(logpath.c_str(),"a+");
+ if (Config->logpath == "")
+ {
+ Config->logpath = GetFullProgDir(argv,argc) + "/ircd.log";
+ }
+ Config->log_file = fopen(Config->logpath.c_str(),"a+");
if (!Config->log_file)
{
- printf("ERROR: Could not write to logfile %s, bailing!\n\n",logpath.c_str());
+ printf("ERROR: Could not write to logfile %s, bailing!\n\n",Config->logpath.c_str());
Exit(ERROR);
}
-#ifdef IS_CYGWIN
- printf("Logging to ircd.log...\n");
-#else
- printf("Logging to %s...\n",logpath.c_str());
-#endif
}