From ed3f24943f17dbc2459572ccdde34e62eaf945eb Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Wed, 8 Apr 2015 16:43:14 +0100 Subject: [PATCH] elua lib: add elua_state_dirs_set --- src/bin/elua/main.c | 2 ++ src/lib/elua/Elua.h | 8 ++++++++ src/lib/elua/elua.c | 15 ++++++++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/bin/elua/main.c b/src/bin/elua/main.c index 4310b96..5869e2d 100644 --- a/src/bin/elua/main.c +++ b/src/bin/elua/main.c @@ -402,6 +402,8 @@ elua_main(lua_State *L) INF("arguments parsed"); + elua_state_dirs_set(es, coredir, moddir, appsdir); + lua_gc(L, LUA_GCSTOP, 0); elua_prefix = eina_prefix_new(elua_progname, elua_main, "ELUA", "elua", "checkme", diff --git a/src/lib/elua/Elua.h b/src/lib/elua/Elua.h index 2b06a80..e4df8af 100644 --- a/src/lib/elua/Elua.h +++ b/src/lib/elua/Elua.h @@ -54,6 +54,8 @@ extern "C" { #ifdef EFL_BETA_API_SUPPORT +#include + #include #include #include @@ -61,6 +63,9 @@ extern "C" { typedef struct _Elua_State { lua_State *luastate; + Eina_Stringshare *coredir; + Eina_Stringshare *moddir; + Eina_Stringshare *appsdir; } Elua_State; EAPI int elua_init(void); @@ -69,6 +74,9 @@ EAPI int elua_shutdown(void); EAPI Elua_State *elua_state_new(void); EAPI void elua_state_free(Elua_State *es); +EAPI void elua_state_dirs_set(Elua_State *es, const char *core, + const char *mods, const char *apps); + EAPI Elua_State *elua_state_from_lua_get(lua_State *L); EAPI int elua_report_error(Elua_State *es, const char *pname, int status); diff --git a/src/lib/elua/elua.c b/src/lib/elua/elua.c index 6601953..3446ac4 100644 --- a/src/lib/elua/elua.c +++ b/src/lib/elua/elua.c @@ -69,7 +69,7 @@ elua_state_new(void) lua_State *L = luaL_newstate(); if (!L) return NULL; - ret = malloc(sizeof(Elua_State)); + ret = calloc(1, sizeof(Elua_State)); ret->luastate = L; luaL_openlibs(L); lua_pushlightuserdata(L, ret); @@ -82,9 +82,22 @@ elua_state_free(Elua_State *es) { if (!es) return; if (es->luastate) lua_close(es->luastate); + eina_stringshare_del(es->coredir); + eina_stringshare_del(es->moddir); + eina_stringshare_del(es->appsdir); free(es); } +EAPI void +elua_state_dirs_set(Elua_State *es, const char *core, const char *mods, + const char *apps) +{ + if (!es) return; + if (core) es->coredir = eina_stringshare_add(core); + if (mods) es->moddir = eina_stringshare_add(mods); + if (apps) es->appsdir = eina_stringshare_add(apps); +} + EAPI Elua_State * elua_state_from_lua_get(lua_State *L) { -- 2.7.4