makesyscalls: rip out arbitrary command execution
This was previously needed only for CloudABI, which used it to generate its capenabled from syscalls.master. CloudABI was removed in cf0ee8738e31, so we don't need to support this anymore. Others looking to do similar things should come up with a more integrated technique, such as a .conf flag or pattern/glob support. brooks suggests that it could be done in modern makesyscalls.lua by adding a config flag to specify always-on/initial flags (CAPENABLED). Reviewed by: brooks, imp MFC after: never Differential Revision: https://reviews.freebsd.org/D32095
This commit is contained in:
parent
340e009ecc
commit
e12a0ffe2b
@ -195,19 +195,6 @@ local function trim(s, char)
|
||||
return s:gsub("^" .. char .. "+", ""):gsub(char .. "+$", "")
|
||||
end
|
||||
|
||||
-- We have to io.popen it, making sure it's properly escaped, and grab the
|
||||
-- output from the handle returned.
|
||||
local function exec(cmd)
|
||||
cmd = cmd:gsub('"', '\\"')
|
||||
|
||||
local shcmd = "/bin/sh -c \"" .. cmd .. "\""
|
||||
local fh = io.popen(shcmd)
|
||||
local output = fh:read("a")
|
||||
|
||||
fh:close()
|
||||
return output
|
||||
end
|
||||
|
||||
-- config looks like a shell script; in fact, the previous makesyscalls.sh
|
||||
-- script actually sourced it in. It had a pretty common format, so we should
|
||||
-- be fine to make various assumptions
|
||||
@ -240,8 +227,9 @@ local function process_config(file)
|
||||
key = trim(key)
|
||||
value = trim(value)
|
||||
local delim = value:sub(1,1)
|
||||
if delim == '`' or delim == '"' then
|
||||
if delim == '"' then
|
||||
local trailing_context
|
||||
|
||||
-- Strip off the key/value part
|
||||
trailing_context = nextline:sub(kvp:len() + 1)
|
||||
-- Strip off any trailing comment
|
||||
@ -253,26 +241,7 @@ local function process_config(file)
|
||||
print(trailing_context)
|
||||
abort(1, "Malformed line: " .. nextline)
|
||||
end
|
||||
end
|
||||
if delim == '`' then
|
||||
-- Command substition may use $1 and $2 to mean
|
||||
-- the syscall definition file and itself
|
||||
-- respectively. We'll go ahead and replace
|
||||
-- $[0-9] with respective arg in case we want to
|
||||
-- expand this in the future easily...
|
||||
value = trim(value, delim)
|
||||
for capture in value:gmatch("$([0-9]+)") do
|
||||
capture = tonumber(capture)
|
||||
if capture > #arg then
|
||||
abort(1, "Not enough args: " ..
|
||||
value)
|
||||
end
|
||||
value = value:gsub("$" .. capture,
|
||||
arg[capture])
|
||||
end
|
||||
|
||||
value = exec(value)
|
||||
elseif delim == '"' then
|
||||
value = trim(value, delim)
|
||||
else
|
||||
-- Strip off potential comments
|
||||
|
Loading…
x
Reference in New Issue
Block a user