From: Timo Sirainen Date: Mon, 5 Apr 2010 00:56:46 +0000 (+0300) Subject: Added settings_parse_unalias(). X-Git-Tag: 2.0.beta5~219 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5aeacb77d572e6d39d6f54428672f608afa77f8a;p=thirdparty%2Fdovecot%2Fcore.git Added settings_parse_unalias(). --HG-- branch : HEAD --- diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 7b24ca3c7f..889e63961f 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -714,6 +714,22 @@ bool settings_parse_is_valid_key(struct setting_parser_context *ctx, return settings_find_key(ctx, key, &def, &link); } +const char *settings_parse_unalias(struct setting_parser_context *ctx, + const char *key) +{ + const struct setting_define *def; + struct setting_link *link; + + if (!settings_find_key(ctx, key, &def, &link)) + return NULL; + + while (def->type == SET_ALIAS) { + i_assert(def != link->info->defines); + def--; + } + return def->key; +} + const void * settings_parse_get_value(struct setting_parser_context *ctx, const char *key, enum setting_type *type_r) diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index abc7522634..583632d201 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -124,6 +124,10 @@ settings_parse_get_prev_info(struct setting_parser_context *ctx); /* Returns TRUE if the given key is a valid setting. */ bool settings_parse_is_valid_key(struct setting_parser_context *ctx, const char *key); +/* If key is an alias, return the primary key name. If key exists, return key + itself. If key doesn't exist, return NULL. */ +const char *settings_parse_unalias(struct setting_parser_context *ctx, + const char *key); /* Returns pointer to value for a key, or NULL if not found. */ const void * settings_parse_get_value(struct setting_parser_context *ctx,