Mercurial > prosody-hg
annotate util-src/compat.c @ 12233:e4530bdbf5f3
util.prosodyctl.check: Fix reset of libunbound before DNS checks
Probably worked anyway but settings might not always have been applied
depending on what order things happens in.
Error was hidden by the pcall, which was sorta intentional...
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 01 Feb 2022 14:46:42 +0100 |
| parents | cfc7b2f7251e |
| children | a187600ec7d6 |
| rev | line source |
|---|---|
|
9561
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 #include <lua.h> |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 #include <lauxlib.h> |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 static int lc_xpcall (lua_State *L) { |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 int ret; |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 int n_arg = lua_gettop(L); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 /* f, msgh, p1, p2... */ |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 luaL_argcheck(L, n_arg >= 2, 2, "value expected"); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 lua_pushvalue(L, 1); /* f to top */ |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 lua_pushvalue(L, 2); /* msgh to top */ |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 lua_replace(L, 1); /* msgh to 1 */ |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 lua_replace(L, 2); /* f to 2 */ |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 /* msgh, f, p1, p2... */ |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 ret = lua_pcall(L, n_arg - 2, LUA_MULTRET, 1); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 lua_pushboolean(L, ret == 0); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 lua_replace(L, 1); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 return lua_gettop(L); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 } |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 int luaopen_util_compat(lua_State *L) { |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 lua_createtable(L, 0, 2); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 { |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 lua_pushcfunction(L, lc_xpcall); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 lua_setfield(L, -2, "xpcall"); |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 } |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 return 1; |
|
cfc7b2f7251e
util.xpcall, util.compat: Add non-hacky multi-argument xpcall() for Lua 5.1
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 } |
