*High quality* ban command by Skywing.


} else if(!strnicmp(trigger, "ban ", 4) && checkpriv(puser, 'O') && currentchannel.haveop == true) {
     Channeluser *currentuser = 0;
     bool bcontinue = true;
     char banuser[256] = "";
     char banmsg[256] = "";
     char tmpname[256] = "";
     for(unsigned int icnt = 0; icnt < strlen(ptxt); icnt++) {
      if(ptxt[icnt] == ',' || ptxt[icnt] == '"') {
       bcontinue = false;
       break;
      }
     }
     if(bcontinue == true) {
      sscanf(trigger + 4, "%s %s", banuser, banmsg);
      CharLower(banuser);
      usershere->rewind();
      if(!strchr(banuser, '*') && !strchr(banuser, '?')) {
       while(!usershere->at_end()) {
        currentuser = usershere->get();
        strcpy(tmpname, currentuser->name);
        CharLower(tmpname);
        if(!strcmp(tmpname, banuser) && (currentuser->icon & 0x02))
         bcontinue = false;
        ++*usershere;
       }
       if(bcontinue == true) {
        if(checkpriv(banuser, 'S') || checkexisting(botlist, banuser)) {
         sprintf(outstr, "/w %s %s is safelisted", !strcmp(puser, bnemuentry) ? botname : puser, banuser);
         addqueue(sb, outstr);
        } else {
         sprintf(outstr, "/ban %s", ptxt + 4)
         addqueue(sb, outstr);
        }
       }
      } else {
       while(!usershere->at_end()) {
        currentuser = usershere->get();
        strcpy(tmpname, currentuser->name);
        CharLower(tmpname);
        if(match(tmpname, banuser) && !checkpriv(tmpname, 'S') && !(currentuser->icon & 0x02) && !checkexisting(botlist, banuser)) {
         sprintf(outstr, "/ban %s %s", tmpname, ptxt + 4 + strlen(banuser) + 1);
         addqueue(sb, outstr);
        }
        +*usershere;-
       }
      }
     }
     processed = true;