From: Timo Sirainen Date: Mon, 14 Nov 2016 23:36:57 +0000 (+0100) Subject: lib-settings: Add settings_parse_keyvalue() X-Git-Tag: 2.2.27~113 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=47505a2735079d393628f033cf842bb0e09e4c37;p=thirdparty%2Fdovecot%2Fcore.git lib-settings: Add settings_parse_keyvalue() --- diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 0dc7d745bc..7cdac05153 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -68,9 +68,6 @@ static const struct setting_parser_info strlist_info = { HASH_TABLE_DEFINE_TYPE(setting_link, struct setting_link *, struct setting_link *); -static int settings_parse_keyvalue(struct setting_parser_context *ctx, - const char *key, const char *value); - static void setting_parser_copy_defaults(struct setting_parser_context *ctx, const struct setting_parser_info *info, @@ -792,13 +789,16 @@ settings_parse_strlist(struct setting_parser_context *ctx, array_append(link->array, &vvalue, 1); } -static int settings_parse_keyvalue(struct setting_parser_context *ctx, - const char *key, const char *value) +int settings_parse_keyvalue(struct setting_parser_context *ctx, + const char *key, const char *value) { const struct setting_define *def; struct setting_link *link; unsigned int n = 0; + ctx->error = NULL; + ctx->prev_info = NULL; + if (!settings_find_key_nth(ctx, key, &n, &def, &link)) { ctx->error = p_strconcat(ctx->parser_pool, "Unknown setting: ", key, NULL); @@ -886,9 +886,6 @@ int settings_parse_line(struct setting_parser_context *ctx, const char *line) const char *key, *value; int ret; - ctx->error = NULL; - ctx->prev_info = NULL; - key = line; value = strchr(line, '='); if (value == NULL) { diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index 25e6d6917c..7f9123a3ae 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -146,6 +146,9 @@ bool settings_parse_is_changed(struct setting_parser_context *ctx, const char *key); /* Parse a single line. Returns 1 if OK, 0 if key is unknown, -1 if error. */ int settings_parse_line(struct setting_parser_context *ctx, const char *line); +/* Parse key/value pair. Returns 1 if OK, 0 if key is unknown, -1 if error. */ +int settings_parse_keyvalue(struct setting_parser_context *ctx, + const char *key, const char *value); /* Parse data already read in input stream. */ int settings_parse_stream(struct setting_parser_context *ctx, struct istream *input);