From: Daniel Kolesa Date: Fri, 10 Apr 2015 16:04:07 +0000 (+0100) Subject: elua lib: add elua_state_setup_modules + use X-Git-Tag: v1.15.0-alpha1~752^2~54 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=24a694026a77170d1e8b14b9d6b23411f0e832c5;p=platform%2Fupstream%2Fefl.git elua lib: add elua_state_setup_modules + use --- diff --git a/src/bin/elua/main.c b/src/bin/elua/main.c index cf499aa..062ddf6 100644 --- a/src/bin/elua/main.c +++ b/src/bin/elua/main.c @@ -49,13 +49,6 @@ struct Main_Data int status; }; -const luaL_reg cutillib[] = -{ - { "init_module", elua_module_init }, - { "popenv" , elua_io_popen }, - { NULL , NULL } -}; - static void elua_print_help(const char *pname, FILE *stream) { @@ -95,7 +88,6 @@ elua_main(lua_State *L) hasexec = EINA_FALSE; Eina_List *largs = NULL; const char *coredir = NULL, *moddir = NULL, *appsdir = NULL; - char modfile[PATH_MAX]; char *data = NULL; int ch; @@ -144,26 +136,7 @@ elua_main(lua_State *L) elua_state_dirs_set(es, coredir, moddir, appsdir); elua_state_dirs_fill(es, noenv); - coredir = elua_state_core_dir_get(es); - moddir = elua_state_mod_dir_get(es); - appsdir = elua_state_apps_dir_get(es); - - if (!coredir || !moddir || !appsdir) - { - ERR("could not set one or more script directories"); - goto error; - } - - snprintf(modfile, sizeof(modfile), "%s/module.lua", coredir); - if (elua_report_error(es, elua_state_prog_name_get(es), - elua_io_loadfile(es, modfile))) - goto error; - lua_pushcfunction(L, elua_module_system_init); - lua_createtable(L, 0, 0); - luaL_register(L, NULL, cutillib); - lua_call(L, 2, 0); - - if (!elua_state_setup_i18n(es)) + if (!elua_state_setup_modules(es) || !elua_state_setup_i18n(es)) goto error; elua_io_register(es); diff --git a/src/lib/elua/Elua.h b/src/lib/elua/Elua.h index 5100f51..e9bd6ee 100644 --- a/src/lib/elua/Elua.h +++ b/src/lib/elua/Elua.h @@ -90,6 +90,7 @@ EAPI lua_State *elua_state_lua_state_get(const Elua_State *es); EAPI int elua_report_error(const Elua_State *es, const char *pname, int status); EAPI Eina_Bool elua_state_setup_i18n(const Elua_State *es); +EAPI Eina_Bool elua_state_setup_modules(const Elua_State *es); EAPI int elua_io_loadfile(const Elua_State *es, const char *fname); EAPI void elua_io_register(const Elua_State *es); diff --git a/src/lib/elua/elua.c b/src/lib/elua/elua.c index 3bda98b..c124b20 100644 --- a/src/lib/elua/elua.c +++ b/src/lib/elua/elua.c @@ -295,9 +295,9 @@ elua_state_setup_i18n(const Elua_State *es) EINA_SAFETY_ON_NULL_RETURN_VAL(es, EINA_FALSE); EINA_SAFETY_ON_NULL_RETURN_VAL(es->luastate, EINA_FALSE); EINA_SAFETY_ON_NULL_RETURN_VAL(es->coredir, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(es->progname, EINA_FALSE); snprintf(buf, sizeof(buf), "%s/gettext.lua", es->coredir); - if (elua_report_error(es, elua_state_prog_name_get(es), - elua_io_loadfile(es, buf))) + if (elua_report_error(es, es->progname, elua_io_loadfile(es, buf))) return EINA_FALSE; lua_createtable(es->luastate, 0, 0); luaL_register(es->luastate, NULL, gettextlib); @@ -311,6 +311,31 @@ elua_state_setup_i18n(const Elua_State *es) return EINA_TRUE; } +const luaL_reg _elua_cutillib[] = +{ + { "init_module", elua_module_init }, + { "popenv" , elua_io_popen }, + { NULL , NULL } +}; + +EAPI Eina_Bool +elua_state_setup_modules(const Elua_State *es) +{ + char buf[PATH_MAX]; + EINA_SAFETY_ON_NULL_RETURN_VAL(es, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(es->luastate, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(es->coredir, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(es->progname, EINA_FALSE); + snprintf(buf, sizeof(buf), "%s/module.lua", es->coredir); + if (elua_report_error(es, es->progname, elua_io_loadfile(es, buf))) + return EINA_FALSE; + lua_pushcfunction(es->luastate, elua_module_system_init); + lua_createtable(es->luastate, 0, 0); + luaL_register(es->luastate, NULL, _elua_cutillib); + lua_call(es->luastate, 2, 0); + return EINA_TRUE; +} + EAPI int elua_module_init(lua_State *L) {