static void internaldostring() { if (lua_getparam(2) != LUA_NOOBJECT) lua_error("invalid 2nd argument (probably obsolete code)"); if (lua_dostring(luaL_check_string(1)) == 0) if (luaA_passresults() == 0) lua_pushuserdata(0); // at least one result to signal no errors }
static void internaldofile (void) { const char *fname = luaL_opt_string(1, NULL); if (lua_dofile(fname) == 0) if (luaA_passresults() == 0) lua_pushuserdata(NULL); /* at least one result to signal no errors */ }
static void luaB_call (void) { lua_Object f = luaL_nonnullarg(1); Hash *arg = gethash(2); char *options = luaL_opt_string(3, ""); lua_Object err = lua_getparam(4); int narg = (int)getnarg(arg); int i, status; if (err != LUA_NOOBJECT) { /* set new error method */ lua_pushobject(err); err = lua_seterrormethod(); } /* push arg[1...n] */ luaD_checkstack(narg); for (i=0; i<narg; i++) *(L->stack.top++) = *luaH_getint(arg, i+1); status = lua_callfunction(f); if (err != LUA_NOOBJECT) { /* restore old error method */ lua_pushobject(err); lua_seterrormethod(); } if (status != 0) { /* error in call? */ if (strchr(options, 'x')) { lua_pushnil(); return; /* return nil to signal the error */ } else lua_error(NULL); } else { /* no errors */ if (strchr(options, 'p')) luaA_packresults(); else luaA_passresults(); } }
static void luaB_dostring (void) { long l; char *s = luaL_check_lstr(1, &l); if (*s == ID_CHUNK) lua_error("`dostring' cannot run pre-compiled code"); if (lua_dobuffer(s, l, luaL_opt_string(2, s)) == 0) if (luaA_passresults() == 0) lua_pushuserdata(NULL); /* at least one result to signal no errors */ }
static void luaI_call (void) { lua_Object f = luaL_nonnullarg(1); lua_Object arg = luaL_tablearg(2); const char *options = luaL_opt_string(3, ""); lua_Object err = lua_getparam(4); int32 narg = getnarg(arg); int32 i, status; if (err != LUA_NOOBJECT) { /* set new error method */ lua_pushobject(err); err = lua_seterrormethod(); } /* push arg[1...n] */ for (i=0; i<narg; i++) { lua_Object temp; /* temp = arg[i+1] */ lua_pushobject(arg); lua_pushnumber(i+1); temp = lua_rawgettable(); if (narg == MAX_INT && lua_isnil(temp)) break; lua_pushobject(temp); } status = lua_callfunction(f); if (err != LUA_NOOBJECT) { /* restore old error method */ lua_pushobject(err); lua_seterrormethod(); } if (status != 0) { /* error in call? */ if (strchr(options, 'x')) { lua_pushnil(); return; /* return nil to signal the error */ } else lua_error(NULL); } else { /* no errors */ if (strchr(options, 'p')) luaA_packresults(); else luaA_passresults(); } }
void L1_new_dofile() { const char *fname_str = luaL_check_string(1); if (g_grim->bundle_dofile(fname_str) == 0) if (luaA_passresults() == 0) lua_pushuserdata(0); }