* CMDDESC: Ops you or other users on channel(s).
* CMDFUNC: csc_doop
* CMDPROTO: int csc_doop(void *source, int cargc, char **cargv);
- * CMDHELP: Usage: OP [<channel> [<user1> [<user2> [...]]]
+ * CMDHELP: Usage: OP [<channel> [<user1> [<user2> [...]]]]
* CMDHELP: Ops you on one or more channels, or ops other named users on a given channel.
* CMDHELP: This command cannot be used to op users who are otherwise prevented from getting
* CMDHELP: ops, e.g. via the +d chanlev flag (see CHANLEV) or bitch mode (see CHANFLAGS).
int csc_doop(void *source, int cargc, char **cargv) {
nick *sender=source, *np;
reguser *rup=getreguserfromnick(sender);
+ reguser *srup=rup;
chanindex *cip;
regchan *rcp=NULL;
regchanuser *rcup;
unsigned long *lp;
int i;
modechanges changes;
- int donotice=0;
- char buf[512], bufpos=0;
+ int donotice=0, bufpos=0;
+ char buf[512];
if (!rup)
return CMD_ERROR;
localsetmodeinit(&changes, ca[i], chanservnick);
localdosetmode_nick(&changes, sender, MC_OP);
localsetmodeflush(&changes,1);
+ cs_logchanop(rcp, sender->nick, rup);
}
}
}
return CMD_ERROR;
rcp=cip->exts[chanservext];
+
+ /* If the channel doesn't currently exist, forget it. */
+ if (!cip->channel) {
+ chanservstdmessage(sender, QM_EMPTYCHAN, cip->name->content);
+ return CMD_ERROR;
+ }
if (cargc==1) {
/* Only one arg: "op me" */
localsetmodeinit(&changes, cip->channel, chanservnick);
localdosetmode_nick(&changes, sender, MC_OP);
localsetmodeflush(&changes,1);
+ cs_logchanop(rcp, sender->nick, srup);
chanservstdmessage(sender, QM_DONE);
return CMD_OK;
bufpos += sprintf(buf+bufpos,"%s%s",bufpos?", ":"",np->nick);
localdosetmode_nick(&changes, np, MC_OP);
+ cs_logchanop(rcp, np->nick, srup);
}
if (donotice && bufpos) {
- sendopnoticetochannel(chanservnick, cip->channel, "%s opped %s", sender, buf);
+ sendopnoticetochannel(chanservnick, cip->channel, "%s opped %s", sender->nick, buf);
}
localsetmodeflush(&changes, 1);