lua: do not use Lua filesystem functions for loading scripts

Bill Gates did not only create COVID, he's also responsible for the
world's worst OS, where you have to literally jump through hoops of fire
to open files with Unicode file names. Lua did not care to implement any
jumping, so it's our turn to jump.

Untested (on win32).

Fixes: #7701
This commit is contained in:
wm4 2020-05-10 16:46:21 +02:00
parent ad9f3bfe96
commit a7d11b2fc0
1 changed files with 6 additions and 3 deletions

View File

@ -230,10 +230,13 @@ static void load_file(lua_State *L, const char *fname)
{ {
struct script_ctx *ctx = get_ctx(L); struct script_ctx *ctx = get_ctx(L);
MP_DBG(ctx, "loading file %s\n", fname); MP_DBG(ctx, "loading file %s\n", fname);
int r = luaL_loadfile(L, fname); struct bstr s = stream_read_file(fname, ctx, ctx->mpctx->global, 100000000);
if (r) if (!s.start)
luaL_error(L, "Could not read file.\n");
if (luaL_loadbuffer(L, s.start, s.len, fname))
lua_error(L); lua_error(L);
lua_call(L, 0, 0); lua_call(L, 0, 1);
talloc_free(s.start);
} }
static int load_builtin(lua_State *L) static int load_builtin(lua_State *L)