- if (Req->argc == 1) {
- if (strcasecmp(Req->argv[0], "CLEAR") == 0)
- return Handle_CAP_CLEAR(Client);
- if (strcasecmp(Req->argv[0], "END") == 0)
- return Handle_CAP_END(Client);
- }
- if (Req->argc >= 1 && Req->argc <= 2) {
- if (strcasecmp(Req->argv[0], "LS") == 0)
- return Handle_CAP_LS(Client, Req->argv[1]);
- if (strcasecmp(Req->argv[0], "LIST") == 0)
- return Handle_CAP_LIST(Client, Req->argv[1]);
- }
- if (Req->argc == 2) {
- if (strcasecmp(Req->argv[0], "REQ") == 0)
- return Handle_CAP_REQ(Client, Req->argv[1]);
- if (strcasecmp(Req->argv[0], "ACK") == 0)
- return Handle_CAP_ACK(Client, Req->argv[1]);
+ ptr = strtok(tmp, " ");
+ while (ptr) {
+ if (*ptr == '-') {
+ /* drop capabilities */
+ ptr++;
+ if (strcmp(ptr, "multi-prefix") == 0)
+ Capabilities &= ~CLIENT_CAP_MULTI_PREFIX;
+ else
+ return -1;
+ } else {
+ /* request capabilities */
+ if (strcmp(ptr, "multi-prefix") == 0)
+ Capabilities |= CLIENT_CAP_MULTI_PREFIX;
+ else
+ return -1;
+ }
+ ptr = strtok(NULL, " ");