]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dict: dict-lua - Add unset()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 1 Sep 2021 16:33:49 +0000 (19:33 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 16 Sep 2021 13:59:54 +0000 (13:59 +0000)
src/lib-dict/dict-txn-lua.c

index 61e9e48e800199edc34908385850de29bb152b19..b6c6945c410d92135573ff8d1b5cf2e44a2baccc 100644 (file)
@@ -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]
  *