diff --git a/source/texk/web2c/luatexdir/lua/liolibext.c b/source/texk/web2c/luatexdir/lua/liolibext.c
index 2aedf86aa2952d05d8cbb0012e37925f4bcc52cf..acf70f7b254eaa4b7cafaf9ea9dcf54fdf499bf4 100644
--- a/source/texk/web2c/luatexdir/lua/liolibext.c
+++ b/source/texk/web2c/luatexdir/lua/liolibext.c
@@ -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;
+  }
 }
 
 /*
diff --git a/source/texk/web2c/luatexdir/lua/luastuff.w b/source/texk/web2c/luatexdir/lua/luastuff.w
index 79622e14d15a1ba731c9d16bfec34967780ef3c3..48b03a2b8b9bc81d2c26f4c6e77ca5a67f07a624 100644
--- a/source/texk/web2c/luatexdir/lua/luastuff.w
+++ b/source/texk/web2c/luatexdir/lua/luastuff.w
@@ -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;
 }