summaryrefslogtreecommitdiff
path: root/degesch.c
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2015-06-17 23:16:44 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2015-06-17 23:16:44 +0200
commita0b98720b9bd9b57f5042650030f4129e955a538 (patch)
tree7bf0d8dbed04dcb40783f17ff9e5d3ea2fe87477 /degesch.c
parent9027889002741af359d6f1fcc8d95409734121cc (diff)
downloadxK-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.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/degesch.c b/degesch.c
index 560cd37..80a0512 100644
--- a/degesch.c
+++ b/degesch.c
@@ -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",