diff options
author | daurnimator <quae@daurnimator.com> | 2018-04-06 22:48:55 +1000 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2018-04-06 22:48:55 +1000 |
commit | 2f417ee12f25aa5e1121cbc666111b90ed1d1054 (patch) | |
tree | 227eeb4be16099518f6ab6aa6f1ca4df0cd24ba9 | |
parent | 3fdb709d2c65659180150bc4253945fd0ac5fbad (diff) | |
download | fengari-2f417ee12f25aa5e1121cbc666111b90ed1d1054.tar.gz fengari-2f417ee12f25aa5e1121cbc666111b90ed1d1054.tar.bz2 fengari-2f417ee12f25aa5e1121cbc666111b90ed1d1054.zip |
src/loslib.js: In os.remove, try unlink and on EISDIR try rmdir
This is what glibc does, it's better than trying to stat beforehand
-rw-r--r-- | src/loslib.js | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/loslib.js b/src/loslib.js index 6fec903..6c6b2f4 100644 --- a/src/loslib.js +++ b/src/loslib.js @@ -251,13 +251,17 @@ if (typeof process === "undefined") { syslib.remove = function(L) { let filename = luaL_checkstring(L, 1); try { - if (fs.lstatSync(filename).isDirectory()) { - fs.rmdirSync(filename); + fs.unlinkSync(filename); + } catch (e) { + if (e.code === 'EISDIR') { + try { + fs.rmdirSync(filename); + } catch (e) { + return luaL_fileresult(L, false, filename, e); + } } else { - fs.unlinkSync(filename); + return luaL_fileresult(L, false, filename, e); } - } catch (e) { - return luaL_fileresult(L, false, filename, e); } return luaL_fileresult(L, true); }; |