diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-06-17 23:16:44 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-06-17 23:16:44 +0200 |
commit | a0b98720b9bd9b57f5042650030f4129e955a538 (patch) | |
tree | 7bf0d8dbed04dcb40783f17ff9e5d3ea2fe87477 /degesch.c | |
parent | 9027889002741af359d6f1fcc8d95409734121cc (diff) | |
download | xK-a0b98720b9bd9b57f5042650030f4129e955a538.tar.gz xK-a0b98720b9bd9b57f5042650030f4129e955a538.tar.xz xK-a0b98720b9bd9b57f5042650030f4129e955a538.zip |
degesch: fix /mode on servers with +channels
Diffstat (limited to 'degesch.c')
-rw-r--r-- | degesch.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -6317,9 +6317,16 @@ handle_command_mode (struct app_context *ctx, char *arguments) return true; // FIXME: allow usernames as well, not only channels - // FIXME: +channels collide with setting modes struct server *s = ctx->current_buffer->server; - char *channel_name = try_get_channel (ctx, &arguments); + + // Channel names prefixed by "+" collide with mode strings, + // so we just disallow specifying these channels + char *channel_name = NULL; + if (*arguments != '+') + channel_name = maybe_cut_word (&arguments, validate_channel_name, s); + if (!channel_name && ctx->current_buffer->type == BUFFER_CHANNEL) + channel_name = ctx->current_buffer->channel->name; + if (!channel_name) buffer_send_error (ctx, ctx->current_buffer, "%s: %s", "Can't set mode", |