/** * Handle unban fantasy command. * @param argc Argument count * @param argv Argument list * @return MOD_CONT or MOD_STOP **/ static int do_fantasy(int argc, char **argv) { User *u; ChannelInfo *ci; char *target = NULL; if (argc < 3) return MOD_CONT; if (stricmp(argv[0], "unban") == 0) { u = finduser(argv[1]); ci = cs_findchan(argv[2]); if (!u || !ci || !check_access(u, ci, CA_UNBAN)) return MOD_CONT; if (argc >= 4) target = myStrGetToken(argv[3], ' ', 0); if (!target) common_unban_full(ci, u->nick, true); else common_unban(ci, target); /* free target if needed (#852) */ Anope_Free(target); } return MOD_CONT; }
/** * The /cs unban command. * @param u The user who issued the command * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing. **/ int do_unban(User * u) { char *chan = strtok(NULL, " "); Channel *c; ChannelInfo *ci; if (!chan) { syntax_error(s_ChanServ, u, "UNBAN", CHAN_UNBAN_SYNTAX); } else if (!(c = findchan(chan))) { notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan); } else if (!(ci = c->ci)) { notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan); } else if (ci->flags & CI_VERBOTEN) { notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); } else if (!check_access(u, ci, CA_UNBAN)) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); } else { common_unban(ci, u->nick); notice_lang(s_ChanServ, u, CHAN_UNBANNED, chan); } return MOD_CONT; }