From: Aki Tuomi Date: Thu, 18 Oct 2018 09:04:41 +0000 (+0300) Subject: lib-lua: Add DLUA_REQUIRE_ARGS(s,x) and DLUA_REQUIRE_ARGS_IN(s,x,y) X-Git-Tag: 2.3.4~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1f50a25f2cca6cc2b3b4fdb213c6918cd87a545a;p=thirdparty%2Fdovecot%2Fcore.git lib-lua: Add DLUA_REQUIRE_ARGS(s,x) and DLUA_REQUIRE_ARGS_IN(s,x,y) First form requires that x arguments are provided for dlua script s. Second form requires that at least x and at most y arguments are provided for dlua script s Automatically returns luaL_error. --- diff --git a/src/lib-lua/dlua-script-private.h b/src/lib-lua/dlua-script-private.h index 1b5cb01735..7f521b5904 100644 --- a/src/lib-lua/dlua-script-private.h +++ b/src/lib-lua/dlua-script-private.h @@ -35,6 +35,9 @@ void luaL_setmetatable (lua_State *L, const char *tname); #define DLUA_TABLE_NULL(n, s) { .name = n, .type = DLUA_TABLE_VALUE_NULL } #define DLUA_TABLE_END { .name = NULL } +#define DLUA_REQUIRE_ARGS_IN(s,x,y) if (lua_gettop((s)->L) < (x) || lua_gettop((s)->L) > (y)) { return luaL_error((s)->L, "expected %d to %d arguments, got %d", x, y, lua_gettop((s)->L)); } +#define DLUA_REQUIRE_ARGS(s,x) if (lua_gettop((s)->L) != (x)) { return luaL_error((s)->L, "expected %d arguments, got %d", (x), lua_gettop((s)->L)); } + struct dlua_script { struct dlua_script *prev,*next; pool_t pool;