diff options
| author | ruki <[email protected]> | 2017-05-23 10:08:10 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-05-23 10:08:10 +0800 |
| commit | ffa57872e4e1df66db1df8174ffcde4ff0dcd296 (patch) | |
| tree | efdfac36b53d06e8f18d12e4abe1d32de85cc67e /xmake/core/base/os.lua | |
| parent | a29b2d72f26bc88f64eb44cd14255dad68153e7d (diff) | |
| parent | 2cb7a91bf266680266de51636ce6620cbecc9362 (diff) | |
Merge pull request #113 from TitanSnow/root
privilege manage (escalation & degradation) when running as root
Diffstat (limited to 'xmake/core/base/os.lua')
| -rw-r--r-- | xmake/core/base/os.lua | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua index 02d96ad7e..ea6d3a9b0 100644 --- a/xmake/core/base/os.lua +++ b/xmake/core/base/os.lua @@ -34,6 +34,7 @@ local string = require("base/string") -- save original interfaces os._uid = os._uid or os.uid +os._gid = os._gid or os.gid os._mkdir = os._mkdir or os.mkdir os._rmdir = os._rmdir or os.rmdir os._tmpdir = os._tmpdir or os.tmpdir @@ -627,30 +628,32 @@ function os.nuldev() end -- get uid -function os.uid() - - -- get it from cache first - if os._UID then - return os._UID - end - +function os.uid(...) -- get uid os._UID = {} if os._uid then - os._UID = os._uid() or {} + os._UID = os._uid(...) or {} end -- ok? return os._UID end +-- get gid +function os.gid(...) + -- get gid + os._GID = {} + if os._gid then + os._GID = os._gid(...) or {} + end + + -- ok? + return os._GID +end + -- check run command as root function os.isroot() - - -- get it from cache - if os._ISROOT ~= nil then - return os._ISROOT - end + os._ISROOT = nil -- check it if os.uid().euid == 0 then |
