void DoDelete(CommandSource &source, ChanServ::Channel *ci, const Anope::string &word) { if (!badwords->GetBadWordCount(ci)) { source.Reply(_("Bad word list for \002{0}\002 is empty."), ci->GetName()); return; } bool override = !source.AccessFor(ci).HasPriv("BADWORDS"); /* Special case: is it a number/list? Only do search if it isn't. */ if (!word.empty() && isdigit(word[0]) && word.find_first_not_of("1234567890,-") == Anope::string::npos) { unsigned int deleted = 0; NumberList(word, true, [&](unsigned int num) { if (!num || num > badwords->GetBadWordCount(ci)) return; Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "DEL " << badwords->GetBadWord(ci, num - 1)->GetWord(); ++deleted; badwords->EraseBadWord(ci, num - 1); },
/** * Check if the given string is a pure wildcard * @param str String to check * @return 1 for pure wildcard, 0 for anything else */ bool str_is_pure_wildcard(const Anope::string &str) { return str.find_first_not_of('*') == Anope::string::npos; }