From 57fc30eb8669d1a564372a2ca9842da4f118663f Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 19 Jan 2010 14:39:24 +0200 Subject: [PATCH] config: Added support for "octal integer", which is just printed as octal. --HG-- branch : HEAD --- src/config/config-request.c | 13 +++++++++++-- src/lib-settings/settings-parser.c | 5 +++++ src/lib-settings/settings-parser.h | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/config/config-request.c b/src/config/config-request.c index 739c9c0bc7..e6019074db 100644 --- a/src/config/config-request.c +++ b/src/config/config-request.c @@ -137,10 +137,19 @@ settings_export(struct settings_export_context *ctx, break; } case SET_UINT: + case SET_UINT_OCT: case SET_TIME: { const unsigned int *val = value, *dval = default_value; - if (dump_default || dval == NULL || *val != *dval) - str_printfa(ctx->value, "%u", *val); + if (dump_default || dval == NULL || *val != *dval) { + switch (def->type) { + case SET_UINT_OCT: + str_printfa(ctx->value, "0%o", *val); + break; + default: + str_printfa(ctx->value, "%u", *val); + break; + } + } break; } case SET_STR_VARS: { diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 8676de05fd..111ed5651d 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -551,6 +551,7 @@ settings_parse(struct setting_parser_context *ctx, struct setting_link *link, return -1; break; case SET_UINT: + case SET_UINT_OCT: if (get_uint(ctx, value, (unsigned int *)ptr) < 0) return -1; break; @@ -1023,6 +1024,7 @@ settings_var_expand_info(const struct setting_parser_info *info, switch (def->type) { case SET_BOOL: case SET_UINT: + case SET_UINT_OCT: case SET_TIME: case SET_SIZE: case SET_STR: @@ -1095,6 +1097,7 @@ bool settings_vars_have_key(const struct setting_parser_info *info, void *set, switch (def->type) { case SET_BOOL: case SET_UINT: + case SET_UINT_OCT: case SET_TIME: case SET_SIZE: case SET_STR: @@ -1166,6 +1169,7 @@ setting_copy(enum setting_type type, const void *src, void *dest, pool_t pool) break; } case SET_UINT: + case SET_UINT_OCT: case SET_TIME: { const unsigned int *src_uint = src; unsigned int *dest_uint = dest; @@ -1276,6 +1280,7 @@ settings_changes_dup(const struct setting_parser_info *info, switch (def->type) { case SET_BOOL: case SET_UINT: + case SET_UINT_OCT: case SET_TIME: case SET_SIZE: case SET_STR_VARS: diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index f83764c8e9..7369ba402a 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -19,6 +19,7 @@ struct var_expand_table; enum setting_type { SET_BOOL, SET_UINT, + SET_UINT_OCT, SET_TIME, SET_SIZE, SET_STR, -- 2.47.3