Skip to content
Snippets Groups Projects
Unverified Commit e39cbcbd authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

gluon-core: gluon.util: make exec() replace all stdio files with /dev/null

parent ea12cb77
No related branches found
No related tags found
No related merge requests found
...@@ -13,13 +13,14 @@ local function do_filter_prefix(input, output, prefix) ...@@ -13,13 +13,14 @@ local function do_filter_prefix(input, output, prefix)
return f return f
end end
local function close_stdio(stream, mode)
local function escape_args(ret, arg0, ...) local null = nixio.open('/dev/null', mode)
if not arg0 then if null then
return ret nixio.dup(null, nixio[stream])
if null:fileno() > 2 then
null:close()
end
end end
return escape_args(ret .. "'" .. string.gsub(arg0, "'", "'\\''") .. "' ", ...)
end end
...@@ -76,9 +77,21 @@ function remove_from_set(t, itm) ...@@ -76,9 +77,21 @@ function remove_from_set(t, itm)
return changed return changed
end end
function exec(...) function exec(...)
return os.execute(escape_args('', 'exec', ...)) local pid, errno, error = nixio.fork()
if pid == 0 then
close_stdio('stdin', 'r')
close_stdio('stdout', 'w')
close_stdio('stderr', 'w')
nixio.execp(...)
os.exit(127)
elseif pid > 0 then
local wpid, status, code = nixio.waitpid(pid)
return wpid and status == 'exited' and code
else
return nil, errno, error
end
end end
-- Removes all lines starting with a prefix from a file, optionally adding a new one -- Removes all lines starting with a prefix from a file, optionally adding a new one
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment