]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm dict iter: Move iter-specific parameter handling to cmd_dict_iter()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 10 Aug 2023 09:13:25 +0000 (12:13 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:10 +0000 (12:34 +0200)
src/doveadm/doveadm-dict.c

index d1e2ebab8f33433e07a1442eda5fcfb08e964ce5..e8c4603219a5bc50e1f6f8a77dbd5bdb9bf1e050 100644 (file)
 #include <unistd.h>
 
 static int
-cmd_dict_init_full(struct doveadm_cmd_context *cctx,
-                  enum dict_iterate_flags *iter_flags,
-                  struct dict **dict_r, struct dict_op_settings *dopset_r)
+cmd_dict_init(struct doveadm_cmd_context *cctx,
+             struct dict **dict_r,
+             struct dict_op_settings *dopset_r)
 {
        struct dict *dict;
-       bool set = FALSE;
        const char *filter_name, *error, *key, *username = "";
        i_zero(dopset_r);
 
-       if (doveadm_cmd_param_bool(cctx, "exact", &set) && set)
-               *iter_flags |= DICT_ITERATE_FLAG_EXACT_KEY;
-       if (doveadm_cmd_param_bool(cctx, "recurse", &set) && set)
-               *iter_flags |= DICT_ITERATE_FLAG_RECURSE;
-       if (doveadm_cmd_param_bool(cctx, "no-value", &set) && set)
-               *iter_flags |= DICT_ITERATE_FLAG_NO_VALUE;
        (void)doveadm_cmd_param_str(cctx, "user", &username);
        dopset_r->username = username;
 
@@ -68,15 +61,6 @@ cmd_dict_init_full(struct doveadm_cmd_context *cctx,
        return 0;
 }
 
-static int
-cmd_dict_init(struct doveadm_cmd_context *cctx,
-             struct dict **dict_r,
-             struct dict_op_settings *set_r)
-{
-       enum dict_iterate_flags iter_flags = 0;
-       return cmd_dict_init_full(cctx, &iter_flags, dict_r, set_r);
-}
-
 static int
 cmd_dict_init_transaction(struct doveadm_cmd_context *cctx,
                          struct dict **dict_r,
@@ -258,8 +242,14 @@ static void cmd_dict_iter(struct doveadm_cmd_context *cctx)
                doveadm_exit_code = EX_USAGE;
                return;
        }
+       if (doveadm_cmd_param_flag(cctx, "exact"))
+               iter_flags |= DICT_ITERATE_FLAG_EXACT_KEY;
+       if (doveadm_cmd_param_flag(cctx, "recurse"))
+               iter_flags |= DICT_ITERATE_FLAG_RECURSE;
+       if (doveadm_cmd_param_flag(cctx, "no-value"))
+               iter_flags |= DICT_ITERATE_FLAG_NO_VALUE;
 
-       if (cmd_dict_init_full(cctx, &iter_flags, &dict, &set) < 0)
+       if (cmd_dict_init(cctx, &dict, &set) < 0)
                return;
 
        doveadm_print_init(DOVEADM_PRINT_TYPE_TAB);