X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lua%2Fruntime.c;h=0fb777c578ea0a807f43b09b4c13af26f3d1d527;hp=a442401f6f06eb9b8f4184e118c72ca5de7849ed;hb=a83b73d30397ee8e5c33668bcc0f1712ac74ff29;hpb=0840ecb90bb99da0d6b0c028ace977dd1932e6e1 diff --git a/lib-lua/runtime.c b/lib-lua/runtime.c index a442401..0fb777c 100644 --- a/lib-lua/runtime.c +++ b/lib-lua/runtime.c @@ -21,6 +21,7 @@ #include "lib-lua_priv.h" static lua_State *L; +static reg_entry registry[LTK_count]; static const luaL_Reg lualibs[] = { {"", luaopen_base}, @@ -66,18 +67,30 @@ int mlua_wrap(void (*errfun)(const char *fmt, ...), int status) return status; } -ssize_t mlua_value(char *buf, ssize_t len, - const char *table, const char *key) +const char *mlua_reggets(int tk) { - ssize_t res; + if (registry[tk].type != REG_STR) + return NULL; + return registry[tk].s; +} - lua_getglobal(L, table); - lua_pushstring(L, key); - lua_gettable(L, -2); - res = m_strcpy(buf, len, lua_tostring(L, -1)); - lua_remove(L, -1); - lua_remove(L, -1); +int mlua_reggeti(int tk) +{ + if (registry[tk].type != REG_INT) + return -1; + return registry[tk].i; +} - return res; +void mlua_regsets(int tk, const char *s) +{ + reg_entry_wipe(registry + tk); + registry[tk].type = REG_STR; + registry[tk].s = m_strdup(s); } +void mlua_regseti(int tk, int i) +{ + reg_entry_wipe(registry + tk); + registry[tk].type = REG_INT; + registry[tk].i = i; +}