ref: 745c5d5e5058f5e4ffb40425be424be467add1da
dir: /tools/cmd.tool/
static char*
cmd(OToolcall tc, void*)
{
JSON *j, *jc, *ja;
char *cmd, *args;
char *ret;
if (!allowed(tc, 1))
return abortcall(tc);
j = jsonparse(tc.arguments);
jc = jsonbyname(j, "cmd");
ja = jsonbyname(j, "args");
if (!jc)
goto Enocmd;
if (!ja)
goto Enoargs;
cmd = jsonstr(jc);
if (!cmd)
goto Enocmd;
if (ja->t != JSONArray)
goto Enoargs;
args = joinstrarray(ja->first, " ", 0);
cmd = smprint("%s %s", cmd, args);
ret = callfunc(cmd);
free(args);
jsonfree(j);
return ret;
Enocmd:
jsonfree(j);
return strdup("no command");
Enoargs:
jsonfree(j);
return strdup("no arguments");
}
static char *cmddesc = "call a function in the rc shell.";
static char *cmdargs = ""
%%json
{
"type": "object",
"properties": {
"cmd": {
"type": "string",
"description": "name or path of the command."
},
"args": {
"type": "array",
"description": "command line arguments. Can be empty. Wildcards like * are allowed.",
"items": { "type": "string" }
}
},
"required": [ "cmd", "args" ]
}
%/json
;