Skip to content

Commit

Permalink
load_cfg can actually use the same context now they are reference cou…
Browse files Browse the repository at this point in the history
…nted.
  • Loading branch information
nicm committed Mar 22, 2013
1 parent d1e6ce2 commit 0ff9275
Showing 1 changed file with 13 additions and 17 deletions.
30 changes: 13 additions & 17 deletions cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,13 @@ cfg_add_cause(struct causelist *causes, const char *fmt, ...)
* causes. Note that causes must be initialised by the caller!
*/
enum cmd_retval
load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
load_cfg(const char *path, struct cmd_ctx *ctx, struct causelist *causes)
{
FILE *f;
u_int n;
char *buf, *copy, *line, *cause;
size_t len, oldlen;
struct cmd_list *cmdlist;
struct cmd_ctx ctx;
enum cmd_retval retval;

if ((f = fopen(path, "rb")) == NULL) {
Expand All @@ -90,6 +89,15 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)

cfg_references++;

if (ctx != NULL)
cmd_ref_ctx(ctx);
else {
ctx = cmd_get_ctx();
ctx->error = cfg_error;
ctx->print = cfg_print;
ctx->info = cfg_print;
}

n = 0;
line = NULL;
retval = CMD_RETURN_NORMAL;
Expand Down Expand Up @@ -146,22 +154,8 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
if (cmdlist == NULL)
continue;

if (ctxin == NULL) {
ctx.msgdata = NULL;
ctx.curclient = NULL;
ctx.cmdclient = NULL;
} else {
ctx.msgdata = ctxin->msgdata;
ctx.curclient = ctxin->curclient;
ctx.cmdclient = ctxin->cmdclient;
}

ctx.error = cfg_error;
ctx.print = cfg_print;
ctx.info = cfg_print;

cfg_cause = NULL;
switch (cmd_list_exec(cmdlist, &ctx)) {
switch (cmd_list_exec(cmdlist, ctx)) {
case CMD_RETURN_YIELD:
if (retval != CMD_RETURN_ATTACH)
retval = CMD_RETURN_YIELD;
Expand All @@ -186,6 +180,8 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
}
fclose(f);

cmd_free_ctx(ctx);

cfg_references--;

return (retval);
Expand Down

0 comments on commit 0ff9275

Please sign in to comment.