diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-04-12 01:04:24 +0200 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-04-12 01:04:24 +0200 |
commit | 6c56f426fb2823ea6b41d1c9028448b7f8d5db09 (patch) | |
tree | c24ed2f6e4fbd1009bc718c97850b36426a133b4 /root_commands.c | |
parent | eabc9d2c1b1d29aeb47162da64ce2b607c3d43ff (diff) |
Allow short versions of root commands (just give enough to match exactly
one command), for the lazy users.
Diffstat (limited to 'root_commands.c')
-rw-r--r-- | root_commands.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/root_commands.c b/root_commands.c index e5a5b41d..60aa3bf6 100644 --- a/root_commands.c +++ b/root_commands.c @@ -91,14 +91,20 @@ void root_command_string( irc_t *irc, char *command ) void root_command( irc_t *irc, char *cmd[] ) { - int i; + int i, len; if( !cmd[0] ) return; + len = strlen( cmd[0] ); for( i = 0; commands[i].command; i++ ) - if( g_strcasecmp( commands[i].command, cmd[0] ) == 0 ) + if( g_strncasecmp( commands[i].command, cmd[0], len ) == 0 ) { + if( commands[i+1].command && + g_strncasecmp( commands[i+1].command, cmd[0], len ) == 0 ) + /* Only match on the first letters if the match is unique. */ + break; + MIN_ARGS( commands[i].required_parameters ); commands[i].execute( irc, cmd ); @@ -1178,32 +1184,30 @@ static void cmd_transfer( irc_t *irc, char **cmd ) } #endif +/* IMPORTANT: Keep this list sorted! The short command logic needs that. */ const command_t commands[] = { - { "help", 0, cmd_help, 0 }, { "account", 1, cmd_account, 0 }, + { "add", 2, cmd_add, 0 }, + { "drop", 1, cmd_drop, 0 }, + { "help", 0, cmd_help, 0 }, { "identify", 1, cmd_identify, 0 }, + { "no", 0, cmd_yesno, 0 }, { "register", 1, cmd_register, 0 }, - { "drop", 1, cmd_drop, 0 }, - { "save", 0, cmd_save, 0 }, - { "add", 2, cmd_add, 0 }, { "remove", 1, cmd_remove, 0 }, -#if 0 - { "info", 1, cmd_info, 0 }, -#endif { "rename", 2, cmd_rename, 0 }, -#if 0 - { "block", 1, cmd_block, 0 }, - { "allow", 1, cmd_allow, 0 }, -#endif + { "save", 0, cmd_save, 0 }, { "set", 0, cmd_set, 0 }, { "yes", 0, cmd_yesno, 0 }, - { "no", 0, cmd_yesno, 0 }, #if 0 + { "allow", 1, cmd_allow, 0 }, { "blist", 0, cmd_blist, 0 }, + { "block", 1, cmd_block, 0 }, + { "chat", 1, cmd_chat, 0 }, + { "ft", 0, cmd_transfer, 0 }, + { "info", 1, cmd_info, 0 }, + { "join_chat", 2, cmd_join_chat, 0 }, { "nick", 1, cmd_nick, 0 }, { "qlist", 0, cmd_qlist, 0 }, - { "join_chat", 2, cmd_join_chat, 0 }, - { "chat", 1, cmd_chat, 0 }, { "transfer", 0, cmd_transfer, 0 }, #endif { NULL } |