diff options
Diffstat (limited to 'control.c')
-rw-r--r-- | control.c | 17 |
1 files changed, 8 insertions, 9 deletions
@@ -93,7 +93,7 @@ void control_callback(struct client *c, int closed, unused void *data) { char *line, *cause; - struct cmd_ctx ctx; + struct cmd_ctx *ctx; struct cmd_list *cmdlist; if (closed) @@ -108,22 +108,21 @@ control_callback(struct client *c, int closed, unused void *data) break; } - ctx.msgdata = NULL; - ctx.cmdclient = NULL; - ctx.curclient = c; - - ctx.error = control_msg_error; - ctx.print = control_msg_print; - ctx.info = control_msg_info; + ctx = cmd_get_ctx(); + ctx->curclient = c; + ctx->error = control_msg_error; + ctx->print = control_msg_print; + ctx->info = control_msg_info; if (cmd_string_parse(line, &cmdlist, &cause) != 0) { control_write(c, "%%error in line \"%s\": %s", line, cause); free(cause); } else { - cmd_list_exec(cmdlist, &ctx); + cmd_list_exec(cmdlist, ctx); cmd_list_free(cmdlist); } + cmd_free_ctx(ctx); free(line); } |