LIST * builtin_luafile( PARSE *parse, LOL *args, int *jmp) { int top; int ret; LIST *l2; int index = 0; LIST *l = lol_get(args, 0); if (!l) { printf("jam: No argument passed to LuaFile\n"); exit(EXITBAD); } ls_lua_init(); top = ls_lua_gettop(L); ls_lua_newtable(L); for (l2 = lol_get(args, 1); l2; l2 = l2->next) { ls_lua_pushstring(L, l2->string); ls_lua_rawseti(L, -2, ++index); } ls_lua_setfield(L, LUA_GLOBALSINDEX, "arg"); ret = ls_luaL_loadfile(L, l->string); return ls_lua_callhelper(top, ret); }
static int pmain (ls_lua_State *L) { int top; int ret; ls_luaL_openlibs(L); ls_lua_pushcclosure(L, LS_jam_getvar, 0); ls_lua_setfield(L, LUA_GLOBALSINDEX, "jam_getvar"); ls_lua_pushcclosure(L, LS_jam_setvar, 0); ls_lua_setfield(L, LUA_GLOBALSINDEX, "jam_setvar"); ls_lua_pushcclosure(L, LS_jam_evaluaterule, 0); ls_lua_setfield(L, LUA_GLOBALSINDEX, "jam_evaluaterule"); top = ls_lua_gettop(L); ret = ls_luaL_loadstring(L, "require 'lanes'"); ls_lua_callhelper(top, ret); return 0; }
static int pmain (ls_lua_State *L) { int top; int ret; ls_luaL_openlibs(L); ls_lua_pushcclosure(L, LS_jam_getvar, 0); ls_lua_setglobal(L, "jam_getvar"); ls_lua_pushcclosure(L, LS_jam_setvar, 0); ls_lua_setglobal(L, "jam_setvar"); ls_lua_pushcclosure(L, LS_jam_action, 0); ls_lua_setglobal(L, "jam_action"); ls_lua_pushcclosure(L, LS_jam_evaluaterule, 0); ls_lua_setglobal(L, "jam_evaluaterule"); ls_lua_pushcclosure(L, LS_jam_expand, 0); ls_lua_setglobal(L, "jam_expand"); ls_lua_pushcclosure(L, LS_jam_parse, 0); ls_lua_setglobal(L, "jam_parse"); ls_lua_pushcclosure(L, LS_jam_print, 0); ls_lua_setglobal(L, "jam_print"); top = ls_lua_gettop(L); ret = ls_luaL_loadstring(L, "lanes = require 'lanes'"); ls_lua_callhelper(top, ret); ls_lua_getglobal(L, "lanes"); /* lanes */ ls_lua_getfield(L, -1, "configure"); /* lanes configure */ ls_lua_newtable(L); /* lanes configure table */ ls_lua_pushcclosure(L, lanes_on_state_create, 0); /* lanes configure table lanes_on_state_create */ ls_lua_setfield(L, -2, "on_state_create"); /* lanes configure table */ ret = ls_lua_pcall(L, 1, 0, 0); /* lanes */ if (ret != 0) { const char* err = ls_lua_tostring(L, -1); (void)err; } ls_lua_pop(L, 2); ls_lua_newtable(L); ls_lua_setglobal(L, "LineFilters"); return 0; }