aboutsummaryrefslogtreecommitdiffstats
path: root/root_commands.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-07-18 21:12:55 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-07-18 21:12:55 +0100
commit4f22a68c5d1dfd0d1da8b44c3a9d60a7754633b7 (patch)
treef0200cbad80818e484cd43b99a7f461cd8a8b159 /root_commands.c
parent3e59c8d79ae39d8c1412c2bbf8dced6ded74af6f (diff)
Automatically operate on the current channel if just using "channel set".
Diffstat (limited to 'root_commands.c')
-rw-r--r--root_commands.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/root_commands.c b/root_commands.c
index 3b607d22..ddef9cde 100644
--- a/root_commands.c
+++ b/root_commands.c
@@ -549,15 +549,23 @@ static void cmd_channel( irc_t *irc, char **cmd )
return;
}
- MIN_ARGS( 2 );
- len = strlen( cmd[2] );
-
if( ( ic = irc_channel_get( irc, cmd[1] ) ) == NULL )
{
- irc_usermsg( irc, "Could not find channel `%s'", cmd[1] );
+ /* If this doesn't match any channel, maybe this is the short
+ syntax (only works when used inside a channel). */
+ if( ( len = strlen( cmd[1] ) ) &&
+ g_strncasecmp( cmd[1], "set", len ) == 0 &&
+ ( ic = irc_channel_by_name( irc, irc->last_root_cmd ) ) )
+ cmd_set_real( irc, cmd + 1, &ic->set, NULL );
+ else
+ irc_usermsg( irc, "Could not find channel `%s'", cmd[1] );
+
return;
}
+ MIN_ARGS( 2 );
+ len = strlen( cmd[2] );
+
if( len >= 1 && g_strncasecmp( cmd[2], "set", len ) == 0 )
{
cmd_set_real( irc, cmd + 2, &ic->set, NULL );