diff options
author | Harry Jeffery <harry@exec64.co.uk> | 2017-09-23 00:41:30 +0100 |
---|---|---|
committer | Harry Jeffery <harry@exec64.co.uk> | 2017-11-23 21:34:11 +0000 |
commit | ab862e33add80efae9da080df9369dd3c254cb54 (patch) | |
tree | 0a46c8e2c709717dbfdd691ae5d2c6d0df5e16db /src/commands.c | |
parent | 6d000e51014a2c34a510539ed9f4e8b9a0c8c059 (diff) | |
download | imv-ab862e33add80efae9da080df9369dd3c254cb54.tar.gz |
Give commands the full arg string too
Diffstat (limited to 'src/commands.c')
-rw-r--r-- | src/commands.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/commands.c b/src/commands.c index 83ca4bc..6f1e2f4 100644 --- a/src/commands.c +++ b/src/commands.c @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. struct command { char* command; - void (*handler)(struct imv_list *args, void *data); + void (*handler)(struct imv_list *args, const char *argstr, void *data); char* alias; }; @@ -45,7 +45,7 @@ void imv_commands_free(struct imv_commands *cmds) free(cmds); } -void imv_command_register(struct imv_commands *cmds, const char *command, void (*handler)(struct imv_list*, void*)) +void imv_command_register(struct imv_commands *cmds, const char *command, void (*handler)(struct imv_list*, const char*, void*)) { struct command *cmd = malloc(sizeof(struct command)); cmd->command = strdup(command); @@ -73,7 +73,9 @@ int imv_command_exec(struct imv_commands *cmds, const char *command, void *data) struct command *cmd = cmds->command_list->items[i]; if(!strcmp(cmd->command, args->items[0])) { if(cmd->handler) { - cmd->handler(args, data); + /* argstr = all args as a single string */ + const char *argstr = command + strlen(cmd->command) + 1; + cmd->handler(args, argstr, data); ret = 0; } else if(cmd->alias) { ret = imv_command_exec(cmds, cmd->alias, data); |