X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lua%2Fruntime.c;h=34de3bb944aaf2c0558670c73fad6c445b7e148b;hp=becd6de67cc99fcda63e47292f08367c6b892bdb;hb=cc707c1e986b60f2c1c1932d0789038d465a7a59;hpb=84dadd88f9d900c76451ac97b74c9187fab0dd09 diff --git a/lib-lua/runtime.c b/lib-lua/runtime.c index becd6de..34de3bb 100644 --- a/lib-lua/runtime.c +++ b/lib-lua/runtime.c @@ -18,77 +18,24 @@ */ #include - -#include -#include -#include - -#include "lib-lua.h" +#include static lua_State *L; -static const luaL_Reg lualibs[] = { - {"", luaopen_base}, - {LUA_LOADLIBNAME, luaopen_package}, - {LUA_TABLIBNAME, luaopen_table}, - {LUA_IOLIBNAME, luaopen_io}, - {LUA_STRLIBNAME, luaopen_string}, - {LUA_MATHLIBNAME, luaopen_math}, - {LUA_DBLIBNAME, luaopen_debug}, -}; - -static const struct luaL_Reg madmutt_module_funcs[] = { - {NULL, NULL} -}; - -static const struct { - const char *key; - const char *value; -} madmutt_module_vars[] = { - { "version", VERSION }, - /* - ** .pp - ** \fIThis is a read-only system property and specifies madmutt's - ** version string.\fP - */ - { "sysconfdir", SYSCONFDIR }, - /* - ** .pp - ** \fIThis is a read-only system property and specifies madmutt's - ** subversion revision string.\fP - */ - { "bindir", BINDIR }, - /* - ** .pp - ** \fIThis is a read-only system property and specifies the - ** directory containing the madmutt binary.\fP - */ - { "docdir", PKGDOCDIR }, - /* - ** .pp - ** \fIThis is a read-only system property and specifies the - ** directory containing the madmutt documentation.\fP - */ -#ifdef USE_HCACHE -#if defined(HAVE_QDBM) - {"hcache_backend", "qdbm" }, -#elif defined(HAVE_GDBM) - {"hcache_backend", "gdbm" }, -#elif defined(HAVE_DB4) - {"hcache_backend", "db4" }, -#else - {"hcache_backend", "unknown" }, -#endif - /* - ** .pp - ** \fIThis is a read-only system property and specifies the - ** header chaching's database backend.\fP - */ -#endif -}; - -void mlua_initialize(void) +void luaM_initialize(void) { + static const luaL_Reg lualibs[] = { + {"", luaopen_base}, + {LUA_OSLIBNAME, luaopen_os}, + {LUA_LOADLIBNAME, luaopen_package}, + {LUA_TABLIBNAME, luaopen_table}, + {LUA_IOLIBNAME, luaopen_io}, + {LUA_STRLIBNAME, luaopen_string}, + {LUA_MATHLIBNAME, luaopen_math}, + {LUA_DBLIBNAME, luaopen_debug}, + {"madmutt", luaopen_madmutt}, + }; + int i; L = lua_open(); @@ -97,26 +44,20 @@ void mlua_initialize(void) lua_pushstring(L, lualibs[i].name); lua_call(L, 1, 0); } - luaL_register(L, "madmutt", madmutt_module_funcs); - - for (i = 0; i < countof(madmutt_module_vars); i++) { - lua_pushstring(L, madmutt_module_vars[i].value); - lua_setfield(L, -2, madmutt_module_vars[i].key); - } } -void mlua_shutdown(void) +void luaM_shutdown(void) { lua_close(L); } -int mlua_dofile(const char *filename) +int luaM_dofile(const char *filename) { return luaL_dofile(L, filename); } -int mlua_wrap(void (*errfun)(const char *fmt, ...), int status) +int luaM_wrap(void (*errfun)(const char *fmt, ...), int status) { if (status) { (*errfun)("-[lua]-: %s\n", lua_tostring(L, -1)); @@ -125,3 +66,16 @@ int mlua_wrap(void (*errfun)(const char *fmt, ...), int status) return status; } + +quadopt_t luaM_checkquadopt(lua_State *Ls, int narg) +{ + const char *s; + int i = luaL_checkinteger(Ls, narg); + + if (i & ~3) { + s = lua_pushfstring(Ls, "int in [0-3] expected, got %d", i); + return luaL_argerror(Ls, narg, s); + } + return i; +} +