diff options
-rw-r--r-- | src/configreader.cpp | 2 | ||||
-rw-r--r-- | src/inspircd.cpp | 17 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp index e0e249963..0dd5745d1 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -1279,7 +1279,7 @@ bool ServerConfig::ReadFile(file_cache &F, const char* fname) if((pos = confpath.find("/inspircd.conf")) != std::string::npos) { /* Leaves us with just the path */ - std::string newfile = confpath.substr(0, pos) + std::string("/") + newfile; + std::string newfile = confpath.substr(0, pos) + std::string("/") + fname; file = fopen(newfile.c_str(), "r"); } diff --git a/src/inspircd.cpp b/src/inspircd.cpp index df4cfe754..421b91ebe 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -148,7 +148,18 @@ bool InspIRCd::DaemonSeed() void InspIRCd::WritePID(const std::string &filename) { - std::ofstream outfile(filename.c_str()); + std::string fname = (filename.empty() ? "inspircd.pid" : filename); + if (*(fname.begin()) != '/') + { + std::string::size_type pos; + std::string confpath = CONFIG_FILE; + if ((pos = confpath.find("/inspircd.conf")) != std::string::npos) + { + /* Leaves us with just the path */ + fname = confpath.substr(0, pos) + std::string("/") + fname; + } + } + std::ofstream outfile(fname.c_str()); if (outfile.is_open()) { outfile << getpid(); @@ -156,8 +167,8 @@ void InspIRCd::WritePID(const std::string &filename) } else { - printf("Failed to write PID-file '%s', exiting.\n",filename.c_str()); - this->Log(DEFAULT,"Failed to write PID-file '%s', exiting.",filename.c_str()); + printf("Failed to write PID-file '%s', exiting.\n",fname.c_str()); + this->Log(DEFAULT,"Failed to write PID-file '%s', exiting.",fname.c_str()); Exit(0); } } |