summaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/init.cpp b/src/init.cpp
index aa6ff1336..b974f7cdd 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -217,19 +217,12 @@ static void remove_pidfile()
static void write_pidfile()
{
- FILE *pidfile = fopen(Config->GetBlock("serverinfo")->Get<const Anope::string>("pid").c_str(), "w");
- if (pidfile)
- {
-#ifdef _WIN32
- fprintf(pidfile, "%d\n", static_cast<int>(GetCurrentProcessId()));
-#else
- fprintf(pidfile, "%d\n", static_cast<int>(getpid()));
-#endif
- fclose(pidfile);
- atexit(remove_pidfile);
- }
- else
- throw CoreException("Can not write to PID file " + Config->GetBlock("serverinfo")->Get<const Anope::string>("pid"));
+ const auto pidfile = Config->GetBlock("serverinfo")->Get<const Anope::string>("pid");
+ std::ofstream stream(pidfile.str());
+ if (!stream.is_open())
+ throw CoreException("Can not write to PID file " + pidfile);
+ stream << getpid() << std::endl;
+ atexit(remove_pidfile);
}
static void setuidgid()