From df2ee078aa3c3830ae7365a920faa502d97c66d1 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 27 Oct 2012 09:09:33 -0400 Subject: [PATCH] Issue #346 - fix m_permchannels.cpp and m_xline_db.cpp saving their databases on Windows due to rename() failing if the destination file exists --- src/modules/m_permchannels.cpp | 8 ++++++++ src/modules/m_xline_db.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/modules/m_permchannels.cpp b/src/modules/m_permchannels.cpp index 6f67cc31d..40774e1fa 100644 --- a/src/modules/m_permchannels.cpp +++ b/src/modules/m_permchannels.cpp @@ -100,6 +100,14 @@ static bool WriteDatabase() return false; } +#ifdef _WIN32 + if (remove(permchannelsconf.c_str())) + { + ServerInstance->Logs->Log("m_permchannels",DEFAULT, "permchannels: Cannot remove old database! %s (%d)", strerror(errno), errno); + ServerInstance->SNO->WriteToSnoMask('a', "database: cannot remove old database: %s (%d)", strerror(errno), errno); + return false; + } +#endif // Use rename to move temporary to new db - this is guarenteed not to fuck up, even in case of a crash. if (rename(tempname.c_str(), permchannelsconf.c_str()) < 0) { diff --git a/src/modules/m_xline_db.cpp b/src/modules/m_xline_db.cpp index 21c75f45e..6caae07d7 100644 --- a/src/modules/m_xline_db.cpp +++ b/src/modules/m_xline_db.cpp @@ -152,6 +152,14 @@ class ModuleXLineDB : public Module return false; } +#ifdef _WIN32 + if (remove(xlinedbpath.c_str())) + { + ServerInstance->Logs->Log("m_xline_db",DEBUG, "xlinedb: Cannot remove old database! %s (%d)", strerror(errno), errno); + ServerInstance->SNO->WriteToSnoMask('a', "database: cannot remove old database: %s (%d)", strerror(errno), errno); + return false; + } +#endif // Use rename to move temporary to new db - this is guarenteed not to fuck up, even in case of a crash. if (rename(xlinenewdbpath.c_str(), xlinedbpath.c_str()) < 0) { -- 2.39.2