diff --git a/include/znc/IRCNetwork.h b/include/znc/IRCNetwork.h index 174314b6..6af760ec 100644 --- a/include/znc/IRCNetwork.h +++ b/include/znc/IRCNetwork.h @@ -76,6 +76,7 @@ public: const std::vector& GetChans() const; CChan* FindChan(CString sName) const; + std::vector FindChans(const CString& sWild) const; bool AddChan(CChan* pChan); bool AddChan(const CString& sName, bool bInConfig); bool DelChan(const CString& sName); diff --git a/src/IRCNetwork.cpp b/src/IRCNetwork.cpp index d25aea1d..b0c9bda1 100644 --- a/src/IRCNetwork.cpp +++ b/src/IRCNetwork.cpp @@ -649,6 +649,16 @@ CChan* CIRCNetwork::FindChan(CString sName) const { return NULL; } +std::vector CIRCNetwork::FindChans(const CString& sWild) const { + std::vector vChans; + vChans.reserve(m_vChans.size()); + for (std::vector::const_iterator it = m_vChans.begin(); it != m_vChans.end(); ++it) { + if ((*it)->GetName().WildCmp(sWild)) + vChans.push_back(*it); + } + return vChans; +} + bool CIRCNetwork::AddChan(CChan* pChan) { if (!pChan) { return false;