version 1.4, 2012/09/24 13:39:10 |
version 1.5, 2013/03/22 15:49:55 |
|
|
control_callback(struct client *c, int closed, unused void *data) |
control_callback(struct client *c, int closed, unused void *data) |
{ |
{ |
char *line, *cause; |
char *line, *cause; |
struct cmd_ctx ctx; |
struct cmd_ctx *ctx; |
struct cmd_list *cmdlist; |
struct cmd_list *cmdlist; |
|
|
if (closed) |
if (closed) |
|
|
break; |
break; |
} |
} |
|
|
ctx.msgdata = NULL; |
ctx = cmd_get_ctx(); |
ctx.cmdclient = NULL; |
ctx->msgdata = NULL; |
ctx.curclient = c; |
ctx->cmdclient = NULL; |
|
ctx->curclient = c; |
|
|
ctx.error = control_msg_error; |
ctx->error = control_msg_error; |
ctx.print = control_msg_print; |
ctx->print = control_msg_print; |
ctx.info = control_msg_info; |
ctx->info = control_msg_info; |
|
|
if (cmd_string_parse(line, &cmdlist, &cause) != 0) { |
if (cmd_string_parse(line, &cmdlist, &cause) != 0) { |
control_write(c, "%%error in line \"%s\": %s", line, |
control_write(c, "%%error in line \"%s\": %s", line, |
cause); |
cause); |
free(cause); |
free(cause); |
} else { |
} else { |
cmd_list_exec(cmdlist, &ctx); |
cmd_list_exec(cmdlist, ctx); |
cmd_list_free(cmdlist); |
cmd_list_free(cmdlist); |
} |
} |
|
cmd_free_ctx(ctx); |
|
|
free(line); |
free(line); |
} |
} |