From: Timo Sirainen Date: Wed, 1 Sep 2021 16:33:49 +0000 (+0300) Subject: lib-dict: dict-lua - Add unset() X-Git-Tag: 2.3.17~123 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53eeb81a6da8606904e4fc187f15563c27733705;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: dict-lua - Add unset() --- diff --git a/src/lib-dict/dict-txn-lua.c b/src/lib-dict/dict-txn-lua.c index 61e9e48e80..b6c6945c41 100644 --- a/src/lib-dict/dict-txn-lua.c +++ b/src/lib-dict/dict-txn-lua.c @@ -22,11 +22,13 @@ struct lua_dict_txn { static int lua_dict_transaction_rollback(lua_State *L); static int lua_dict_transaction_commit(lua_State *L); static int lua_dict_set(lua_State *L); +static int lua_dict_unset(lua_State *L); static luaL_Reg lua_dict_txn_methods[] = { { "rollback", lua_dict_transaction_rollback }, { "commit", lua_dict_transaction_commit }, { "set", lua_dict_set }, + { "unset", lua_dict_unset }, { NULL, NULL }, }; @@ -163,6 +165,28 @@ static int lua_dict_set(lua_State *L) return 0; } +/* + * Unset key [-2,+0,e] + * + * Args: + * 1) userdata: struct lua_dict_txn * + * 2) string: key + */ +static int lua_dict_unset(lua_State *L) +{ + struct lua_dict_txn *txn; + const char *key; + + DLUA_REQUIRE_ARGS(L, 2); + + txn = xlua_dict_txn_getptr(L, 1, NULL); + key = luaL_checkstring(L, 2); + + dict_unset(txn->txn, key); + + return 0; +} + /* * Start a dict transaction [-(1|2),+1,e] *