static void cmd_dict_iter(int argc, char *argv[]) { struct dict *dict; struct dict_iterate_context *iter; enum dict_iterate_flags iter_flags = 0; const char *key, *value; dict = cmd_dict_init_full(&argc, &argv, 1, 0, cmd_dict_iter, &iter_flags); doveadm_print_init(DOVEADM_PRINT_TYPE_TAB); doveadm_print_header_simple("key"); if ((iter_flags & DICT_ITERATE_FLAG_NO_VALUE) == 0) doveadm_print_header_simple("value"); iter = dict_iterate_init(dict, argv[0], iter_flags); while (dict_iterate(iter, &key, &value)) { doveadm_print(key); if ((iter_flags & DICT_ITERATE_FLAG_NO_VALUE) == 0) doveadm_print(value); } if (dict_iterate_deinit(&iter) < 0) { i_error("dict_iterate_deinit(%s) failed", argv[0]); doveadm_exit_code = EX_TEMPFAIL; } dict_deinit(&dict); }
int index_storage_attribute_iter_deinit(struct mailbox_attribute_iter *_iter) { struct index_storage_attribute_iter *iter = (struct index_storage_attribute_iter *)_iter; int ret; if (iter->diter == NULL) { ret = iter->dict_disabled ? 0 : -1; } else { if ((ret = dict_iterate_deinit(&iter->diter)) < 0) mail_storage_set_internal_error(_iter->box->storage); } i_free(iter->prefix); i_free(iter); return ret; }
static int userdb_dict_iterate_deinit(struct userdb_iterate_context *_ctx) { struct dict_userdb_iterate_context *ctx = (struct dict_userdb_iterate_context *)_ctx; const char *error; int ret = _ctx->failed ? -1 : 0; if (ctx->iter != NULL) { if (dict_iterate_deinit(&ctx->iter, &error) < 0) { i_error("dict_iterate(%s) failed: %s", ctx->key_prefix, error); ret = -1; } } auth_request_unref(&ctx->ctx.auth_request); i_free(ctx); return ret; }
int index_storage_attribute_iter_deinit(struct mailbox_attribute_iter *_iter) { struct index_storage_attribute_iter *iter = (struct index_storage_attribute_iter *)_iter; const char *error; int ret; if (iter->diter == NULL) { ret = iter->dict_disabled ? 0 : -1; } else { if ((ret = dict_iterate_deinit(&iter->diter, &error)) < 0) { mail_storage_set_critical(_iter->box->storage, "dict_iterate(%s) failed: %s", iter->prefix, error); } } i_free(iter->prefix); i_free(iter); return ret; }