Skip to content
Snippets Groups Projects
Commit ae78b565 authored by Taco Hoekwater's avatar Taco Hoekwater
Browse files

restore --recorder output for lua files (dofile/loadfile/io.open)

parent d2ade0bd
Branches
Tags
No related merge requests found
......@@ -181,8 +181,14 @@ static LStream *newfile (lua_State *L) {
static void opencheck (lua_State *L, const char *fname, const char *mode) {
LStream *p = newfile(L);
p->f = fopen(fname, mode);
if (p->f == NULL)
if (p->f == NULL) {
luaL_error(L, "cannot open file " LUA_QS " (%s)", fname, strerror(errno));
} else {
if (mode[0]=='r')
recorder_record_input(fname);
else
recorder_record_output(fname);
}
}
......@@ -199,7 +205,15 @@ static int io_open (lua_State *L) {
return luaL_error(L, "invalid mode " LUA_QS
" (should match " LUA_QL("[rwa]%%+?b?") ")", mode);
p->f = fopen(filename, mode);
return (p->f == NULL) ? luaL_fileresult(L, 0, filename) : 1;
if (p->f == NULL) {
return luaL_fileresult(L, 0, filename) ;
} else {
if (mode[0]=='r')
recorder_record_input(filename);
else
recorder_record_output(filename);
return 1;
}
}
/*
......
......@@ -147,9 +147,12 @@ static int luatex_loadfile (lua_State *L) {
return 2; /* return nil plus error message */
}
status = luaL_loadfilex(L, fname, mode);
if (status == LUA_OK && env) { /* 'env' parameter? */
lua_pushvalue(L, 3);
lua_setupvalue(L, -2, 1); /* set it as 1st upvalue of loaded chunk */
if (status == LUA_OK) {
recorder_record_input(fname);
if (env) { /* 'env' parameter? */
lua_pushvalue(L, 3);
lua_setupvalue(L, -2, 1); /* set it as 1st upvalue of loaded chunk */
}
}
return load_aux(L, status);
}
......@@ -168,6 +171,7 @@ static int luatex_dofile (lua_State *L) {
}
}
if (luaL_loadfile(L, fname) != 0) lua_error(L);
recorder_record_input(fname);
lua_call(L, 0, LUA_MULTRET);
return lua_gettop(L) - n;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment