From e48fe0a4fc194c6fa1c1270412c1c73b15b8ed13 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 18 Aug 2014 20:28:11 +0200 Subject: [PATCH] controlpanel: make delchan support wildcards (resolves #609) --- modules/controlpanel.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/controlpanel.cpp b/modules/controlpanel.cpp index 6f4b81d6..f084518b 100644 --- a/modules/controlpanel.cpp +++ b/modules/controlpanel.cpp @@ -620,16 +620,21 @@ class CAdminMod : public CModule { return; } - CChan* pChan = pNetwork->FindChan(sChan); - if (!pChan) { - PutModule("Error: User [" + sUsername + "] does not have a channel named [" + sChan + "]."); + std::vector vChans = pNetwork->FindChans(sChan); + if (vChans.empty()) { + PutModule("Error: User [" + sUsername + "] does not have any channel matching [" + sChan + "]."); return; } - pNetwork->DelChan(sChan); - pNetwork->PutIRC("PART " + sChan); + VCString vsNames; + for (const CChan* pChan : vChans) { + const CString& sName = pChan->GetName(); + vsNames.push_back(sName); + pNetwork->PutIRC("PART " + sName); + pNetwork->DelChan(sName); + } - PutModule("Channel [" + sChan + "] for user [" + sUsername + "] deleted."); + PutModule("Channel(s) [" + CString(",").Join(vsNames.begin(), vsNames.end()) + "] for user [" + sUsername + "] deleted."); } void GetChan(const CString& sLine) {