MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / luaL_loadfile

Function luaL_loadfile

Source/Misc/lua/src/lua.c:10764–10802  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10762
10763
10764LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) {
10765LoadF lf;
10766int status, readstatus;
10767int c;
10768int fnameindex = lua_gettop(L) + 1; /* index of filename on the stack */
10769lf.extraline = 0;
10770if (filename == NULL) {
10771lua_pushliteral(L, "=stdin");
10772lf.f = stdin;
10773}
10774else {
10775lua_pushfstring(L, "@%s", filename);
10776lf.f = fopen(filename, "r");
10777if (lf.f == NULL) return errfile(L, "open", fnameindex);
10778}
10779c = getc(lf.f);
10780if (c == '#') { /* Unix exec. file? */
10781lf.extraline = 1;
10782while ((c = getc(lf.f)) != EOF && c != '\n') ; /* skip first line */
10783if (c == '\n') c = getc(lf.f);
10784}
10785if (c == LUA_SIGNATURE[0] && filename) { /* binary file? */
10786lf.f = freopen(filename, "rb", lf.f); /* reopen in binary mode */
10787if (lf.f == NULL) return errfile(L, "reopen", fnameindex);
10788/* skip eventual `#!...' */
10789while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ;
10790lf.extraline = 0;
10791}
10792ungetc(c, lf.f);
10793status = lua_load(L, getF, &lf, lua_tostring(L, -1));
10794readstatus = ferror(lf.f);
10795if (filename) fclose(lf.f); /* close file (even in case of errors) */
10796if (readstatus) {
10797lua_settop(L, fnameindex); /* ignore results from `lua_load' */
10798return errfile(L, "read", fnameindex);
10799}
10800lua_remove(L, fnameindex);
10801return status;
10802}
10803
10804
10805typedef struct LoadS {

Callers 3

luaB_loadfileFunction · 0.85
luaB_dofileFunction · 0.85
loader_LuaFunction · 0.85

Calls 6

lua_gettopFunction · 0.85
lua_pushfstringFunction · 0.85
errfileFunction · 0.85
lua_loadFunction · 0.85
lua_settopFunction · 0.85
lua_removeFunction · 0.85

Tested by

no test coverage detected