From eaf2d737d75d85b56d29918f0c4e6afe79e84136 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 26 Sep 2014 15:39:05 +0200 Subject: [PATCH] Add CIRCNetwork::LoadModule() helper Makes it easier to retry loading replacement modules when loading retired modules fail. --- include/znc/IRCNetwork.h | 1 + src/IRCNetwork.cpp | 27 +++++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/znc/IRCNetwork.h b/include/znc/IRCNetwork.h index 8b06069d..5d6f2dbc 100644 --- a/include/znc/IRCNetwork.h +++ b/include/znc/IRCNetwork.h @@ -182,6 +182,7 @@ public: CString& ExpandString(const CString& sStr, CString& sRet) const; private: bool JoinChan(CChan* pChan); + bool LoadModule(const CString& sModName, const CString& sArgs, const CString& sNotice, CString& sError); protected: CString m_sName; diff --git a/src/IRCNetwork.cpp b/src/IRCNetwork.cpp index ae3f6809..34cf568d 100644 --- a/src/IRCNetwork.cpp +++ b/src/IRCNetwork.cpp @@ -377,35 +377,32 @@ bool CIRCNetwork::ParseConfig(CConfig *pConfig, CString& sError, bool bUpgrade) for (vit = vsList.begin(); vit != vsList.end(); ++vit) { CString sValue = *vit; CString sModName = sValue.Token(0); + CString sNotice = "Loading network module [" + sModName + "]"; // XXX Legacy crap, added in ZNC 0.203, modified in 0.207 // Note that 0.203 == 0.207 if (sModName == "away") { - CUtils::PrintMessage("NOTICE: [away] was renamed, " - "loading [awaystore] instead"); + sNotice = "NOTICE: [away] was renamed, loading [awaystore] instead"; sModName = "awaystore"; } // XXX Legacy crap, added in ZNC 0.207 if (sModName == "autoaway") { - CUtils::PrintMessage("NOTICE: [autoaway] was renamed, " - "loading [awaystore] instead"); + sNotice = "NOTICE: [autoaway] was renamed, loading [awaystore] instead"; sModName = "awaystore"; } // XXX Legacy crap, added in 1.1; fakeonline module was dropped in 1.0 and returned in 1.1 if (sModName == "fakeonline") { - CUtils::PrintMessage("NOTICE: [fakeonline] was renamed, loading [modules_online] instead"); + sNotice = "NOTICE: [fakeonline] was renamed, loading [modules_online] instead"; sModName = "modules_online"; } - CUtils::PrintAction("Loading network module [" + sModName + "]"); CString sModRet; CString sArgs = sValue.Token(1, true); - bool bModRet = GetModules().LoadModule(sModName, sArgs, CModInfo::NetworkModule, GetUser(), this, sModRet); + bool bModRet = LoadModule(sModName, sArgs, sNotice, sModRet); - CUtils::PrintStatus(bModRet, sModRet); if (!bModRet) { sError = sModRet; return false; @@ -1351,3 +1348,17 @@ CString& CIRCNetwork::ExpandString(const CString& sStr, CString& sRet) const { return m_pUser->ExpandString(sRet, sRet); } + +bool CIRCNetwork::LoadModule(const CString& sModName, const CString& sArgs, const CString& sNotice, CString& sError) +{ + CUtils::PrintAction(sNotice); + CString sModRet; + + bool bModRet = GetModules().LoadModule(sModName, sArgs, CModInfo::NetworkModule, GetUser(), this, sModRet); + + CUtils::PrintStatus(bModRet, sModRet); + if (!bModRet) { + sError = sModRet; + } + return bModRet; +}