From: Timo Sirainen Date: Fri, 19 Mar 2010 18:55:22 +0000 (+0200) Subject: Added settings_parse_is_changed(). X-Git-Tag: 2.0.beta4~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ba62cd5d748d0d598cb17f8c31d82c875246e4b;p=thirdparty%2Fdovecot%2Fcore.git Added settings_parse_is_changed(). --HG-- branch : HEAD --- diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index b0012693b6..5341cd3728 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -728,6 +728,22 @@ settings_parse_get_value(struct setting_parser_context *ctx, return STRUCT_MEMBER_P(link->set_struct, def->offset); } +bool settings_parse_is_changed(struct setting_parser_context *ctx, + const char *key) +{ + const struct setting_define *def; + struct setting_link *link; + const unsigned char *p; + + if (!settings_find_key(ctx, key, &def, &link)) + return NULL; + if (link->change_struct == NULL) + return FALSE; + + p = STRUCT_MEMBER_P(link->change_struct, def->offset); + return *p; +} + int settings_parse_line(struct setting_parser_context *ctx, const char *line) { const char *key, *value; diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index 59aebf249d..abc7522634 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -128,6 +128,9 @@ bool settings_parse_is_valid_key(struct setting_parser_context *ctx, const void * settings_parse_get_value(struct setting_parser_context *ctx, const char *key, enum setting_type *type_r); +/* Returns TRUE if setting has been changed by this parser. */ +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 data already read in input stream. */