]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings: Added SET_TIME_MSECS type.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 6 May 2016 18:44:22 +0000 (21:44 +0300)
committerGitLab <gitlab@git.dovecot.net>
Sat, 7 May 2016 16:26:07 +0000 (19:26 +0300)
src/lib-settings/settings-parser.c
src/lib-settings/settings-parser.h

index 537685908f433a8082ff1521f1658172fad28cc0..6023ee181874073802d2d6fbd2283a5578afca93 100644 (file)
@@ -671,6 +671,12 @@ settings_parse(struct setting_parser_context *ctx, struct setting_link *link,
                        return -1;
                }
                break;
+       case SET_TIME_MSECS:
+               if (settings_get_time_msecs(value, (unsigned int *)ptr, &error) < 0) {
+                       ctx->error = p_strdup(ctx->parser_pool, error);
+                       return -1;
+               }
+               break;
        case SET_SIZE:
                if (settings_get_size(value, (uoff_t *)ptr, &error) < 0) {
                        ctx->error = p_strdup(ctx->parser_pool, error);
@@ -1281,6 +1287,7 @@ settings_var_expand_info(const struct setting_parser_info *info, void *set,
                case SET_UINT:
                case SET_UINT_OCT:
                case SET_TIME:
+               case SET_TIME_MSECS:
                case SET_SIZE:
                case SET_IN_PORT:
                case SET_STR:
@@ -1377,6 +1384,7 @@ bool settings_vars_have_key(const struct setting_parser_info *info, void *set,
                case SET_UINT:
                case SET_UINT_OCT:
                case SET_TIME:
+               case SET_TIME_MSECS:
                case SET_SIZE:
                case SET_IN_PORT:
                case SET_STR:
@@ -1449,7 +1457,8 @@ setting_copy(enum setting_type type, const void *src, void *dest, pool_t pool)
        }
        case SET_UINT:
        case SET_UINT_OCT:
-       case SET_TIME: {
+       case SET_TIME:
+       case SET_TIME_MSECS: {
                const unsigned int *src_uint = src;
                unsigned int *dest_uint = dest;
 
@@ -1582,6 +1591,7 @@ settings_changes_dup(const struct setting_parser_info *info,
                case SET_UINT:
                case SET_UINT_OCT:
                case SET_TIME:
+               case SET_TIME_MSECS:
                case SET_SIZE:
                case SET_IN_PORT:
                case SET_STR_VARS:
index 03496ee29fb7fa0dac1a7d6d92a510727ef48926..28b3fac78d5f4695a843dbc9a03e8fac0c5cdce0 100644 (file)
@@ -22,6 +22,7 @@ enum setting_type {
        SET_UINT,
        SET_UINT_OCT,
        SET_TIME,
+       SET_TIME_MSECS,
        SET_SIZE,
        SET_IN_PORT, /* internet port */
        SET_STR,
@@ -61,6 +62,10 @@ struct setting_define {
        { SET_TIME + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \
                ((struct struct_name *)0)->name, unsigned int), \
          #name, offsetof(struct struct_name, name), NULL }
+#define SETTING_DEFINE_STRUCT_TIME_MSECS(name, struct_name) \
+       { SET_TIME_MSECS + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \
+               ((struct struct_name *)0)->name, unsigned int), \
+         #name, offsetof(struct struct_name, name), NULL }
 #define SETTING_DEFINE_STRUCT_STR(name, struct_name) \
        { SET_STR + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \
                ((struct struct_name *)0)->name, const char *), \