elua lib: elua_io_loadfile now uses Elua_State

This commit is contained in:
Daniel Kolesa 2015-04-09 13:48:06 +01:00 committed by Daniel Kolesa
parent e4baa1bc12
commit 128aa3a1ea
3 changed files with 17 additions and 14 deletions

View File

@ -203,7 +203,7 @@ static int
elua_dofile(Elua_State *es, const char *fname) elua_dofile(Elua_State *es, const char *fname)
{ {
return elua_report_error(es, elua_progname, return elua_report_error(es, elua_progname,
elua_io_loadfile(es->luastate, fname) elua_io_loadfile(es, fname)
|| elua_docall(es, 0, 1)); || elua_docall(es, 0, 1));
} }
@ -236,10 +236,9 @@ static int
elua_doscript(Elua_State *es, int argc, char **argv, int n, int *quit) elua_doscript(Elua_State *es, int argc, char **argv, int n, int *quit)
{ {
int status; int status;
lua_State *L = es->luastate;
const char *fname = argv[n]; const char *fname = argv[n];
int narg = elua_getargs(es, argc, argv, n); int narg = elua_getargs(es, argc, argv, n);
lua_setglobal(L, "arg"); lua_setglobal(es->luastate, "arg");
if (fname[0] == '-' && !fname[1]) if (fname[0] == '-' && !fname[1])
{ {
fname = NULL; fname = NULL;
@ -251,28 +250,28 @@ elua_doscript(Elua_State *es, int argc, char **argv, int n, int *quit)
if (f) if (f)
{ {
fclose(f); fclose(f);
status = elua_io_loadfile(L, fname); status = elua_io_loadfile(es, fname);
} }
else else
status = !elua_loadapp(es, fname); status = !elua_loadapp(es, fname);
} }
else else
{ {
status = elua_io_loadfile(L, fname); status = elua_io_loadfile(es, fname);
} }
lua_insert(L, -(narg + 1)); lua_insert(es->luastate, -(narg + 1));
if (!status) if (!status)
{ {
status = elua_docall(es, narg, 1); status = elua_docall(es, narg, 1);
} }
else else
{ {
lua_pop(L, narg); lua_pop(es->luastate, narg);
} }
if (!status) if (!status)
{ {
*quit = lua_toboolean(L, -1); *quit = lua_toboolean(es->luastate, -1);
lua_pop(L, 1); lua_pop(es->luastate, 1);
} }
return elua_report_error(es, elua_progname, status); return elua_report_error(es, elua_progname, status);
} }
@ -434,7 +433,7 @@ elua_main(lua_State *L)
} }
} }
snprintf(modfile, sizeof(modfile), "%s/module.lua", coref); snprintf(modfile, sizeof(modfile), "%s/module.lua", coref);
if (elua_report_error(es, elua_progname, elua_io_loadfile(L, modfile))) if (elua_report_error(es, elua_progname, elua_io_loadfile(es, modfile)))
{ {
m->status = 1; m->status = 1;
return 0; return 0;
@ -447,7 +446,7 @@ elua_main(lua_State *L)
lua_call(L, 2, 0); lua_call(L, 2, 0);
snprintf(modfile, sizeof(modfile), "%s/gettext.lua", coref); snprintf(modfile, sizeof(modfile), "%s/gettext.lua", coref);
if (elua_report_error(es, elua_progname, elua_io_loadfile(L, modfile))) if (elua_report_error(es, elua_progname, elua_io_loadfile(es, modfile)))
{ {
m->status = 1; m->status = 1;
return 0; return 0;

View File

@ -84,7 +84,7 @@ EAPI int elua_report_error(Elua_State *es, const char *pname, int status);
EAPI void elua_state_setup_i18n(Elua_State *es); EAPI void elua_state_setup_i18n(Elua_State *es);
EAPI int elua_io_popen(lua_State *L); EAPI int elua_io_popen(lua_State *L);
EAPI int elua_io_loadfile(lua_State *L, const char *fname); EAPI int elua_io_loadfile(Elua_State *es, const char *fname);
EAPI void elua_io_register(lua_State *L); EAPI void elua_io_register(lua_State *L);
#endif #endif

View File

@ -150,13 +150,16 @@ getf_map(lua_State *L EINA_UNUSED, void *ud, size_t *size)
} }
EAPI int EAPI int
elua_io_loadfile(lua_State *L, const char *fname) elua_io_loadfile(Elua_State *es, const char *fname)
{ {
Map_Stream s; Map_Stream s;
int status; int status;
Eina_File *f; Eina_File *f;
const char *chname; const char *chname;
Eina_Bool bcache = EINA_FALSE; Eina_Bool bcache = EINA_FALSE;
lua_State *L;
if (!es || !es->luastate) return -1;
L = es->luastate;
if (!fname) if (!fname)
{ {
return elua_loadstdin(L); return elua_loadstdin(L);
@ -187,8 +190,9 @@ elua_io_loadfile(lua_State *L, const char *fname)
static int static int
loadfile(lua_State *L) loadfile(lua_State *L)
{ {
Elua_State *es = elua_state_from_lua_get(L);
const char *fname = luaL_optstring(L, 1, NULL); const char *fname = luaL_optstring(L, 1, NULL);
int status = elua_io_loadfile(L, fname), int status = elua_io_loadfile(es, fname),
hasenv = (lua_gettop(L) >= 3); hasenv = (lua_gettop(L) >= 3);
if (!status) if (!status)
{ {