q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=208ad62d3cb184688f10198ce42c35cbd3489d90
commit 208ad62d3cb184688f10198ce42c35cbd3489d90 Author: Daniel Kolesa <[email protected]> Date: Wed Dec 17 14:43:50 2014 +0000 elua: error reporting in the library --- src/bin/elua/main.c | 33 ++++++++------------------------- src/lib/elua/Elua.h | 2 ++ src/lib/elua/elua.c | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/bin/elua/main.c b/src/bin/elua/main.c index 94beacf..3716a51 100644 --- a/src/bin/elua/main.c +++ b/src/bin/elua/main.c @@ -48,24 +48,6 @@ static int _el_log_domain = -1; #define ERR(...) EINA_LOG_DOM_ERR(_el_log_domain, __VA_ARGS__) #define CRT(...) EINA_LOG_DOM_CRITICAL(_el_log_domain, __VA_ARGS__) -static void -elua_errmsg(const char *pname, const char *msg) -{ - ERR("%s%s%s", pname ? pname : "", pname ? ": " : "", msg); -} - -static int -elua_report(lua_State *L, int status) -{ - if (status && !lua_isnil(L, -1)) - { - const char *msg = lua_tostring(L, -1); - elua_errmsg(elua_progname, msg ? msg : "(non-string error)"); - lua_pop(L, 1); - } - return status; -} - static int elua_traceback(lua_State *L) { @@ -210,20 +192,21 @@ elua_dolib(lua_State *L, const char *libname) { lua_rawgeti(L, LUA_REGISTRYINDEX, elua_require_ref); lua_pushstring(L, libname); - return elua_report(L, lua_pcall(L, 1, 0, 0)); + return elua_report_error(L, elua_progname, lua_pcall(L, 1, 0, 0)); } static int elua_dofile(lua_State *L, const char *fname) { - return elua_report(L, elua_io_loadfile(L, fname) || elua_docall(L, 0, 1)); + return elua_report_error(L, elua_progname, elua_io_loadfile(L, fname) + || elua_docall(L, 0, 1)); } static int elua_dostr(lua_State *L, const char *chunk, const char *chname) { - return elua_report(L, luaL_loadbuffer(L, chunk, strlen(chunk), chname) - || elua_docall(L, 0, 0)); + return elua_report_error(L, elua_progname, luaL_loadbuffer(L, chunk, + strlen(chunk), chname) || elua_docall(L, 0, 0)); } static Eina_Bool @@ -282,7 +265,7 @@ elua_doscript(lua_State *L, int argc, char **argv, int n, int *quit) *quit = lua_toboolean(L, -1); lua_pop(L, 1); } - return elua_report(L, status); + return elua_report_error(L, elua_progname, status); } void @@ -465,7 +448,7 @@ elua_main(lua_State *L) } } snprintf(modfile, sizeof(modfile), "%s/module.lua", coref); - if (elua_report(L, elua_io_loadfile(L, modfile))) + if (elua_report_error(L, elua_progname, elua_io_loadfile(L, modfile))) { m->status = 1; return 0; @@ -481,7 +464,7 @@ elua_main(lua_State *L) lua_call(L, 2, 0); snprintf(modfile, sizeof(modfile), "%s/gettext.lua", coref); - if (elua_report(L, elua_io_loadfile(L, modfile))) + if (elua_report_error(L, elua_progname, elua_io_loadfile(L, modfile))) { m->status = 1; return 0; diff --git a/src/lib/elua/Elua.h b/src/lib/elua/Elua.h index 80a8a89..8df01de 100644 --- a/src/lib/elua/Elua.h +++ b/src/lib/elua/Elua.h @@ -61,6 +61,8 @@ extern "C" { EAPI int elua_init(void); EAPI int elua_shutdown(void); +EAPI int elua_report_error(lua_State *L, const char *pname, int status); + EAPI void elua_state_setup_i18n(lua_State *L); EAPI int elua_io_popen(lua_State *L); diff --git a/src/lib/elua/elua.c b/src/lib/elua/elua.c index f4411ae..2f88e7b 100644 --- a/src/lib/elua/elua.c +++ b/src/lib/elua/elua.c @@ -62,6 +62,24 @@ elua_shutdown(void) return _elua_init_counter; } +static void +_elua_errmsg(const char *pname, const char *msg) +{ + ERR("%s%s%s", pname ? pname : "", pname ? ": " : "", msg); +} + +EAPI int +elua_report_error(lua_State *L, const char *pname, int status) +{ + if (status && !lua_isnil(L, -1)) + { + const char *msg = lua_tostring(L, -1); + _elua_errmsg(pname, msg ? msg : "(non-string error)"); + lua_pop(L, 1); + } + return status; +} + static int _elua_gettext_bind_textdomain(lua_State *L) { --
