diff --git a/User.cpp b/User.cpp index ec39937f..4bcc44e9 100644 --- a/User.cpp +++ b/User.cpp @@ -338,6 +338,7 @@ bool CUser::ParseConfig(CConfig* pConfig, CString& sError) { } if (pNetwork) { + CZNC::Get().BackupConfigOnce(); CUtils::PrintMessage("NOTICE: Found deprecated config, upgrading to a network"); if (!pNetwork->ParseConfig(pConfig, sError, true)) { diff --git a/znc.cpp b/znc.cpp index dd8ece3e..c8775cb4 100644 --- a/znc.cpp +++ b/znc.cpp @@ -984,6 +984,22 @@ size_t CZNC::FilterUncommonModules(set& ssModules) { return uNrRemoved; } +void CZNC::BackupConfigOnce() +{ + static bool didBackup = false; + if (didBackup) + return; + didBackup = true; + + CUtils::PrintAction("Creating a config backup"); + + CString sBackup = CDir::ChangeDir(m_sConfigFile, "../znc.conf.backup"); + if (CFile::Copy(m_sConfigFile, sBackup)) + CUtils::PrintStatus(true, sBackup); + else + CUtils::PrintStatus(false, strerror(errno)); +} + bool CZNC::ParseConfig(const CString& sConfig) { CString s; diff --git a/znc.h b/znc.h index b18164e6..c1b5a30d 100644 --- a/znc.h +++ b/znc.h @@ -51,6 +51,7 @@ public: bool WriteConfig(); bool ParseConfig(const CString& sConfig); bool RehashConfig(CString& sError); + void BackupConfigOnce(); static CString GetVersion(); static CString GetTag(bool bIncludeVersion = true); CString GetUptime() const;