load_cfg can actually use the same context now they are reference counted.

This commit is contained in:
Nicholas Marriott 2013-02-18 23:35:54 +00:00
parent e2b26d910c
commit 255a4f8ce3

23
cfg.c
View File

@ -73,14 +73,13 @@ cfg_add_cause(struct causelist *causes, const char *fmt, ...)
* causes. Note that causes must be initialised by the caller! * causes. Note that causes must be initialised by the caller!
*/ */
enum cmd_retval 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; FILE *f;
u_int n; u_int n;
char *buf, *copy, *line, *cause; char *buf, *copy, *line, *cause;
size_t len, oldlen; size_t len, oldlen;
struct cmd_list *cmdlist; struct cmd_list *cmdlist;
struct cmd_ctx *ctx;
enum cmd_retval retval; enum cmd_retval retval;
if ((f = fopen(path, "rb")) == NULL) { if ((f = fopen(path, "rb")) == NULL) {
@ -90,21 +89,15 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
cfg_references++; cfg_references++;
ctx = cmd_get_ctx(); if (ctx != NULL)
if (ctxin == NULL) { cmd_ref_ctx(ctx);
ctx->msgdata = NULL; else {
ctx->curclient = NULL; ctx = cmd_get_ctx();
ctx->cmdclient = NULL; ctx->error = cfg_error;
} else { ctx->print = cfg_print;
ctx->msgdata = ctxin->msgdata; ctx->info = cfg_print;
ctx->curclient = ctxin->curclient;
ctx->cmdclient = ctxin->cmdclient;
} }
ctx->error = cfg_error;
ctx->print = cfg_print;
ctx->info = cfg_print;
n = 0; n = 0;
line = NULL; line = NULL;
retval = CMD_RETURN_NORMAL; retval = CMD_RETURN_NORMAL;