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); }
static void mail_user_deinit_base(struct mail_user *user) { if (user->_attr_dict != NULL) { (void)dict_wait(user->_attr_dict); dict_deinit(&user->_attr_dict); } mail_namespaces_deinit(&user->namespaces); }
static void sieve_dict_storage_destroy(struct sieve_storage *storage) { struct sieve_dict_storage *dstorage = (struct sieve_dict_storage *)storage; if ( dstorage->dict != NULL ) dict_deinit(&dstorage->dict); }
void db_dict_unref(struct dict_connection **_conn) { struct dict_connection *conn = *_conn; *_conn = NULL; if (--conn->refcount > 0) return; dict_deinit(&conn->dict); pool_unref(&conn->pool); }
static void last_login_dict_deinit(struct mail_user *user) { struct last_login_user *luser = LAST_LOGIN_USER_CONTEXT(user); if (luser->dict != NULL) { dict_wait(luser->dict); dict_deinit(&luser->dict); } /* remove timeout after dict_wait(), which may trigger last_login_dict_commit() */ if (luser->to != NULL) timeout_remove(&luser->to); }
static void cmd_dict_unset(int argc, char *argv[]) { struct dict *dict; struct dict_transaction_context *trans; dict = cmd_dict_init(&argc, &argv, 1, 0, cmd_dict_unset); trans = dict_transaction_begin(dict); dict_unset(trans, argv[0]); if (dict_transaction_commit(&trans) <= 0) { i_error("dict_transaction_commit() failed"); doveadm_exit_code = EX_TEMPFAIL; } dict_deinit(&dict); }
static void cmd_dict_get(int argc, char *argv[]) { struct dict *dict; const char *value; int ret; dict = cmd_dict_init(&argc, &argv, 1, 0, cmd_dict_get); doveadm_print_init(DOVEADM_PRINT_TYPE_TABLE); doveadm_print_header("value", "", DOVEADM_PRINT_HEADER_FLAG_HIDE_TITLE); ret = dict_lookup(dict, pool_datastack_create(), argv[0], &value); if (ret < 0) { i_error("dict_lookup(%s) failed", argv[0]); doveadm_exit_code = EX_TEMPFAIL; } else if (ret == 0) { i_error("%s doesn't exist", argv[0]); doveadm_exit_code = DOVEADM_EX_NOTFOUND; } else { doveadm_print(value); } dict_deinit(&dict); }
static void cmd_dict_inc(int argc, char *argv[]) { struct dict *dict; struct dict_transaction_context *trans; long long diff; int ret; dict = cmd_dict_init(&argc, &argv, 2, 0, cmd_dict_inc); if (str_to_llong(argv[1], &diff) < 0) i_fatal("Invalid diff: %s", argv[1]); trans = dict_transaction_begin(dict); dict_atomic_inc(trans, argv[0], diff); ret = dict_transaction_commit(&trans); if (ret < 0) { i_error("dict_transaction_commit() failed"); doveadm_exit_code = EX_TEMPFAIL; } else if (ret == 0) { i_error("%s doesn't exist", argv[0]); doveadm_exit_code = DOVEADM_EX_NOTFOUND; } dict_deinit(&dict); }