aboutsummaryrefslogtreecommitdiff
path: root/src/commands.c
diff options
context:
space:
mode:
authorHarry Jeffery <harry@exec64.co.uk>2017-09-23 00:41:30 +0100
committerHarry Jeffery <harry@exec64.co.uk>2017-11-23 21:34:11 +0000
commitab862e33add80efae9da080df9369dd3c254cb54 (patch)
tree0a46c8e2c709717dbfdd691ae5d2c6d0df5e16db /src/commands.c
parent6d000e51014a2c34a510539ed9f4e8b9a0c8c059 (diff)
downloadimv-ab862e33add80efae9da080df9369dd3c254cb54.tar.gz
Give commands the full arg string too
Diffstat (limited to 'src/commands.c')
-rw-r--r--src/commands.c8
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);