summaryrefslogtreecommitdiff
path: root/src/loslib.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/loslib.js')
-rw-r--r--src/loslib.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/loslib.js b/src/loslib.js
index a715aec..8bf38d9 100644
--- a/src/loslib.js
+++ b/src/loslib.js
@@ -83,6 +83,36 @@ if (process && process.exit) {
syslib.exit = os_exit;
}
+
+// Only with Node
+if (typeof require === "function") {
+
+ let fs = false;
+ let tmp = false;
+ try {
+ fs = require('fs');
+ tmp = require('tmp');
+ } catch (e) {}
+
+ if (fs && tmp) {
+ // TODO: on POSIX system, should create the file
+ const lua_tmpname = function() {
+ return tmp.tmpNameSync();
+ };
+
+ const os_tmpname = function(L) {
+ let name = lua_tmpname();
+ if (!name)
+ return lauxlib.luaL_error(L, lua.to_luastring("unable to generate a unique filename"));
+ lua.lua_pushstring(L, lua.to_luastring(name));
+ return 1;
+ };
+
+ syslib.tmpname = os_tmpname;
+ }
+
+}
+
const luaopen_os = function(L) {
lauxlib.luaL_newlib(L, syslib);
return 1;