From 51084a2959951aefd416bc3f2f6cd9952616fd16 Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Fri, 28 Apr 2017 14:56:04 +0200 Subject: os.tmpname --- package.json | 1 + src/loslib.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/package.json b/package.json index c505878..cdfd16d 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "tmp": "0.0.31" }, "dependencies": { + "tmp": "0.0.31", "readline-sync": "^1.4.7", "seedrandom": "^2.4.2", "sprintf-js": "giann/sprintf.js" 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; -- cgit v1.2.3-70-g09d2