From 7916efa9973fa5beae4819be12ddc7a1437fd692 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 8 Sep 2015 00:07:05 +0200 Subject: [PATCH] CClient: share the chan matching code --- include/znc/Client.h | 3 +++ src/Client.cpp | 23 ++++++++++++++--------- src/ClientCommand.cpp | 30 +++--------------------------- 3 files changed, 20 insertions(+), 36 deletions(-) diff --git a/include/znc/Client.h b/include/znc/Client.h index f76fdbd1..3ba18ee0 100644 --- a/include/znc/Client.h +++ b/include/znc/Client.h @@ -30,6 +30,7 @@ class CIRCNetwork; class CIRCSock; class CClient; class CMessage; +class CChan; // !Forward Declarations class CAuthBase { @@ -256,6 +257,8 @@ private: void AddBuffer(const T& Message); void EchoMessage(const CMessage& Message); + std::set MatchChans(const CString& sPatterns) const; + protected: bool m_bGotPass; bool m_bGotNick; diff --git a/src/Client.cpp b/src/Client.cpp index 02db4f17..07f00b6d 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -361,15 +361,7 @@ void CClient::ReadLine(const CString& sData) { return; } - VCString vsChans; - sPatterns.Replace(",", " "); - sPatterns.Split(" ", vsChans, false, "", "", true, true); - - set sChans; - for (const CString& sChan : vsChans) { - vector vChans = m_pNetwork->FindChans(sChan); - sChans.insert(vChans.begin(), vChans.end()); - } + set sChans = MatchChans(sPatterns); unsigned int uDetached = 0; for (CChan* pChan : sChans) { @@ -1062,3 +1054,16 @@ void CClient::EchoMessage(const CMessage& Message) } } } + +set CClient::MatchChans(const CString& sPatterns) const +{ + VCString vsPatterns; + sPatterns.Replace_n(",", " ").Split(" ", vsPatterns, false, "", "", true, true); + + set sChans; + for (const CString& sPattern : vsPatterns) { + vector vChans = m_pNetwork->FindChans(sPattern); + sChans.insert(vChans.begin(), vChans.end()); + } + return sChans; +} diff --git a/src/ClientCommand.cpp b/src/ClientCommand.cpp index f151175f..1ad13d62 100644 --- a/src/ClientCommand.cpp +++ b/src/ClientCommand.cpp @@ -120,15 +120,7 @@ void CClient::UserCommand(CString& sLine) { return; } - VCString vsChans; - sPatterns.Replace(",", " "); - sPatterns.Split(" ", vsChans, false, "", "", true, true); - - set sChans; - for (const CString& sChan : vsChans) { - vector vChans = m_pNetwork->FindChans(sChan); - sChans.insert(vChans.begin(), vChans.end()); - } + set sChans = MatchChans(sPatterns); unsigned int uDetached = 0; for (CChan* pChan : sChans) { @@ -371,15 +363,7 @@ void CClient::UserCommand(CString& sLine) { if (sPatterns.empty()) { PutStatus("Usage: EnableChan <#chans>"); } else { - VCString vsChans; - sPatterns.Replace(",", " "); - sPatterns.Split(" ", vsChans, false, "", "", true, true); - - set sChans; - for (const CString& sChan : vsChans) { - vector vChans = m_pNetwork->FindChans(sChan); - sChans.insert(vChans.begin(), vChans.end()); - } + set sChans = MatchChans(sPatterns); unsigned int uEnabled = 0; for (CChan* pChan : sChans) { @@ -403,15 +387,7 @@ void CClient::UserCommand(CString& sLine) { if (sPatterns.empty()) { PutStatus("Usage: DisableChan <#chans>"); } else { - VCString vsChans; - sPatterns.Replace(",", " "); - sPatterns.Split(" ", vsChans, false, "", "", true, true); - - set sChans; - for (const CString& sChan : vsChans) { - vector vChans = m_pNetwork->FindChans(sChan); - sChans.insert(vChans.begin(), vChans.end()); - } + set sChans = MatchChans(sPatterns); unsigned int uDisabled = 0; for (CChan* pChan : sChans) {