diff options
author | nicm <nicm> | 2016-10-09 08:06:51 +0000 |
---|---|---|
committer | nicm <nicm> | 2016-10-09 08:06:51 +0000 |
commit | 1db6d6fea6158d8d0d05e59497e40a5cfc40d068 (patch) | |
tree | 41b26060a92f19ee78172a0a1d5849e23f3715a3 /cmd-if-shell.c | |
parent | 48dd250af1ee7d097ed89ad793428a4ce139f381 (diff) | |
download | rtmux-1db6d6fea6158d8d0d05e59497e40a5cfc40d068.tar.gz rtmux-1db6d6fea6158d8d0d05e59497e40a5cfc40d068.tar.bz2 rtmux-1db6d6fea6158d8d0d05e59497e40a5cfc40d068.zip |
Pass file/line to new command for if-shell so that errors appear
sensibly.
Diffstat (limited to 'cmd-if-shell.c')
-rw-r--r-- | cmd-if-shell.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/cmd-if-shell.c b/cmd-if-shell.c index 7d3e8e12..3dc20cd1 100644 --- a/cmd-if-shell.c +++ b/cmd-if-shell.c @@ -50,6 +50,9 @@ const struct cmd_entry cmd_if_shell_entry = { }; struct cmd_if_shell_data { + char *file; + u_int line; + char *cmd_if; char *cmd_else; @@ -106,7 +109,11 @@ cmd_if_shell_exec(struct cmd *self, struct cmd_q *cmdq) return (CMD_RETURN_NORMAL); } - cdata = xmalloc(sizeof *cdata); + cdata = xcalloc(1, sizeof *cdata); + if (self->file != NULL) { + cdata->file = xstrdup(self->file); + cdata->line = self->line; + } cdata->cmd_if = xstrdup(args->argv[1]); if (args->argc == 3) @@ -148,7 +155,8 @@ cmd_if_shell_callback(struct job *job) if (cmd == NULL) return; - if (cmd_string_parse(cmd, &cmdlist, NULL, 0, &cause) != 0) { + if (cmd_string_parse(cmd, &cmdlist, cdata->file, cdata->line, + &cause) != 0) { if (cause != NULL) { cmdq_error(cmdq, "%s", cause); free(cause); @@ -184,6 +192,8 @@ cmd_if_shell_done(struct cmd_q *cmdq1) free(cdata->cmd_else); free(cdata->cmd_if); + + free(cdata->file); free(cdata); } @@ -201,5 +211,7 @@ cmd_if_shell_free(void *data) free(cdata->cmd_else); free(cdata->cmd_if); + + free(cdata->file); free(cdata); } |