summaryrefslogtreecommitdiffstats
path: root/cfg.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2010-02-06 23:22:27 +0000
committerNicholas Marriott <nicm@openbsd.org>2010-02-06 23:22:27 +0000
commit46511805037cf33bd9e2c6286e33417d9fd35d1f (patch)
tree1eeeeb3e2184b8dd28e011c6402532e396493ad7 /cfg.c
parentbb53c20c1882cbc909d4fe2ae3c6ad665da6abf6 (diff)
Use the array.h code for the causes list.
Diffstat (limited to 'cfg.c')
-rw-r--r--cfg.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/cfg.c b/cfg.c
index 074f5f8b..d540ff9b 100644
--- a/cfg.c
+++ b/cfg.c
@@ -33,10 +33,9 @@
void printflike2 cfg_print(struct cmd_ctx *, const char *, ...);
void printflike2 cfg_error(struct cmd_ctx *, const char *, ...);
-char *cfg_cause;
-int cfg_finished;
-char **cfg_causes;
-u_int cfg_ncauses;
+char *cfg_cause;
+int cfg_finished;
+struct causelist cfg_causes = ARRAY_INITIALIZER;
/* ARGSUSED */
void printflike2
@@ -55,8 +54,8 @@ cfg_error(unused struct cmd_ctx *ctx, const char *fmt, ...)
va_end(ap);
}
-void printflike3
-cfg_add_cause(u_int *ncauses, char ***causes, const char *fmt, ...)
+void printflike2
+cfg_add_cause(struct causelist *causes, const char *fmt, ...)
{
char *cause;
va_list ap;
@@ -65,8 +64,7 @@ cfg_add_cause(u_int *ncauses, char ***causes, const char *fmt, ...)
xvasprintf(&cause, fmt, ap);
va_end(ap);
- *causes = xrealloc(*causes, *ncauses + 1, sizeof **causes);
- (*causes)[(*ncauses)++] = cause;
+ ARRAY_ADD(causes, cause);
}
/*
@@ -74,8 +72,7 @@ cfg_add_cause(u_int *ncauses, char ***causes, const char *fmt, ...)
* causes. Note that causes and ncauses must be initialised by the caller!
*/
int
-load_cfg(
- const char *path, struct cmd_ctx *ctxin, u_int *ncauses, char ***causes)
+load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
{
FILE *f;
u_int n;
@@ -85,7 +82,7 @@ load_cfg(
struct cmd_ctx ctx;
if ((f = fopen(path, "rb")) == NULL) {
- cfg_add_cause(ncauses, causes, "%s: %s", path, strerror(errno));
+ cfg_add_cause(causes, "%s: %s", path, strerror(errno));
return (-1);
}
n = 0;
@@ -105,8 +102,7 @@ load_cfg(
if (cmd_string_parse(buf, &cmdlist, &cause) != 0) {
if (cause == NULL)
continue;
- cfg_add_cause(
- ncauses, causes, "%s: %u: %s", path, n, cause);
+ cfg_add_cause(causes, "%s: %u: %s", path, n, cause);
xfree(cause);
continue;
}
@@ -132,8 +128,7 @@ load_cfg(
cmd_list_exec(cmdlist, &ctx);
cmd_list_free(cmdlist);
if (cfg_cause != NULL) {
- cfg_add_cause(
- ncauses, causes, "%s: %d: %s", path, n, cfg_cause);
+ cfg_add_cause(causes, "%s: %d: %s", path, n, cfg_cause);
xfree(cfg_cause);
continue;
}
@@ -142,7 +137,7 @@ load_cfg(
xfree(line);
fclose(f);
- if (*ncauses != 0)
+ if (ARRAY_LENGTH(causes) != 0)
return (-1);
return (0);
}