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",
#ifdef EFL_BETA_API_SUPPORT
+#include <Eina.h>
+
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
typedef struct _Elua_State
{
lua_State *luastate;
+ Eina_Stringshare *coredir;
+ Eina_Stringshare *moddir;
+ Eina_Stringshare *appsdir;
} Elua_State;
EAPI int elua_init(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);
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);
{
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)
{