free(f);
return 0;
}
- char *p = strchr(args[0], ','); // TODO: multiple channels
- if (p)
- *p = '\0';
- channel_join(client, args[0], NULL);
+ char *p = args[0];
+ char *q = args[1];
+ do {
+ char *channel = p;
+ if ((p = strchr(channel, ',')))
+ *p++ = '\0';
+ char *key = q;
+ if (key && (q = strchr(key, ',')))
+ *q++ = '\0';
+ channel_join(client, channel, key);
+ } while (p);
} else if(strcmp(command, "PART") == 0) {
if (!is_registered(client))
return err_notregistered(client), sendbuf(client), 0;
if (!args[0]) // FIXME: error message
return 0;
- char *p = strchr(args[0], ','); // TODO: multiple channels
- if (p)
- *p = '\0';
- struct channel *chan = findChannel(args[0]);
- if (!chan) // TODO: error message
- return 0;
- channel_part(client, chan, args[1] ? args[1] : "");
+ char *p = args[0];
+ do {
+ char *channel = p;
+ if ((p = strchr(channel, ',')))
+ *p++ = '\0';
+ struct channel *chan = findChannel(channel);
+ if (!chan) // TODO: error message
+ return 0;
+ channel_part(client, chan, args[1] ? args[1] : "");
+ } while (p);
} else if(strcmp(command, "TOPIC") == 0) {
if (!is_registered(client))
return err_notregistered(client), sendbuf(client), 0;
return err_notregistered(client), sendbuf(client), 0;
if (argc == 0) // FIXME: error message
return 0;
- char *p = args[0]-1;
+ char *p = args[0];
do {
- char *channel = p+1;
- p = strchr(channel, ',');
- if (p)
- *p = '\0';
+ char *channel = p;
+ if ((p = strchr(channel, ',')))
+ *p++ = '\0';
struct channel *chan = findChannel(channel);
if (chan && (!(chan->dmode & DMODE_SECRET) || trie_get(&chan->members, client->key))) {
channel_sendnames(client, chan);