diff --git a/main.cpp b/main.cpp index f1081f42..4ba28d87 100644 --- a/main.cpp +++ b/main.cpp @@ -107,8 +107,9 @@ int main(int argc, char** argv) { if (bMakeConf) { CZNC* pZNC = CZNC::New(); pZNC->InitDirs(""); - pZNC->WriteNewConfig(sConfig); - return 0; + if (!pZNC->WriteNewConfig(sConfig)) { + return 0; + } } #ifdef HAVE_LIBSSL diff --git a/znc.cpp b/znc.cpp index aad83ff0..f1f155bd 100644 --- a/znc.cpp +++ b/znc.cpp @@ -368,6 +368,11 @@ bool CZNC::WriteNewConfig(const CString& sConfig) { vector vsLines; bool bAnswer = false; + if (!m_LockFile.TryExLock(m_sConfigFile, 50)) { + CUtils::PrintError("ZNC is currently running on this config."); + return false; + } + if (CFile::Exists(sConfigFile)) { if (!CUtils::GetBoolInput("This config already exists. Would you like to overwrite it?", false)) { return false; @@ -617,7 +622,7 @@ bool CZNC::WriteNewConfig(const CString& sConfig) { CUtils::PrintMessage("/server " + CString::ToString(uPort) + " " + sUser + ":", true); CUtils::PrintMessage(""); - return true; + return CUtils::GetBoolInput("Launch znc now?", true); } bool CZNC::ParseConfig(const CString& sConfig) {