return err_needmoreparams(client, command), sendbuf(client), 0;
client->lastactivity = get_time();
(command[0] == 'P' ? msg_privmsg : msg_notice)(client, args[0], args[1]);
+ /* TODO: multiple targets */
// TODO: extra target forms such as nick@server #hostmask $servermask
int is_modmsg = !!strchr("@+", args[0][0]);
+ if (is_modmsg)
+ is_modmsg += !!strchr("@+", args[0][1]);
if (strchr("#&", args[0][is_modmsg])) {
struct channel *chan = findChannel(args[0]+is_modmsg);
if (!chan)
return 1;
}
- switch (args[0][0]) {
- default:
+ if (!is_modmsg) {
sendbuf_list_sans_self(client, &chan->members, 0);
- break;
- case '+': {
+ } else if (memchr(args[0], '+', is_modmsg)) {
int cookie = get_cookie();
sendbuf_list_sans_self(client, &chan->v, cookie);
sendbuf_list_sans_self(client, &chan->o, cookie);
- break;
- }
- case '@':
+ } else {
sendbuf_list_sans_self(client, &chan->o, 0);
- break;
}
} else {
if (!(client->umode & UMODE_REGISTERED)) {