From ab5b1380c1717c22c9d6188b334e8a93c877be57 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Wed, 19 Sep 2018 10:32:03 -0700 Subject: fs.unix: fallback for when $USER variable is unset Also, declare Unix version of current_user in luarocks.fs.unix.tools, so that the pure-Lua version based on LuaPosix takes precedence when available. --- src/luarocks/fs/lua.lua | 2 +- src/luarocks/fs/unix.lua | 8 -------- src/luarocks/fs/unix/tools.lua | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua index 14bf0369..145a60de 100644 --- a/src/luarocks/fs/lua.lua +++ b/src/luarocks/fs/lua.lua @@ -1045,7 +1045,7 @@ function fs_lua.current_user() end function fs_lua.is_superuser() - return false + return posix.geteuid() == 0 end -- This call is not available on all systems, see #677 diff --git a/src/luarocks/fs/unix.lua b/src/luarocks/fs/unix.lua index 28189089..61569e30 100644 --- a/src/luarocks/fs/unix.lua +++ b/src/luarocks/fs/unix.lua @@ -176,14 +176,6 @@ function unix.tmpname() return os.tmpname() end -function unix.current_user() - return os.getenv("USER") -end - -function unix.is_superuser() - return os.getenv("USER") == "root" -end - function unix.export_cmd(var, val) return ("export %s='%s'"):format(var, val) end diff --git a/src/luarocks/fs/unix/tools.lua b/src/luarocks/fs/unix/tools.lua index f0c0a05c..b7fd4de5 100644 --- a/src/luarocks/fs/unix/tools.lua +++ b/src/luarocks/fs/unix/tools.lua @@ -297,4 +297,22 @@ function tools.is_file(file) return fs.execute(vars.TEST, "-f", file) end +function tools.current_user() + local user = os.getenv("USER") + if user then + return user + end + local pd = io.popen("whoami", "r") + if not pd then + return "" + end + user = pd:read("*l") + pd:close() + return user +end + +function tools.is_superuser() + return fs.current_user() == "root" +end + return tools -- cgit v1.2.3-55-g6feb