pkgs: execve -> exec
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
with import ../lib;
|
||||
|
||||
pkgs: oldpkgs: {
|
||||
execve = name: { filename, argv ? null, envp ? {}, destination ? "" }:
|
||||
exec = name: { filename, argv ? null, envp ? null, destination ? "" }:
|
||||
pkgs.writeC name { inherit destination; } /* c */ ''
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -16,18 +16,24 @@ pkgs: oldpkgs: {
|
||||
static char *const argv[] = ${toC (argv ++ [null])};
|
||||
''}
|
||||
|
||||
${optionalString (envp != null) /* c */ ''
|
||||
static char *const envp[] = ${toC (
|
||||
mapAttrsToList (k: v: "${k}=${v}") envp ++ [null]
|
||||
)};
|
||||
''}
|
||||
|
||||
int main (MAIN_ARGS) {
|
||||
${if envp == null then /* c */ ''
|
||||
execv(filename, argv);
|
||||
'' else /* c */ ''
|
||||
execve(filename, argv, envp);
|
||||
''}
|
||||
return -1;
|
||||
}
|
||||
'';
|
||||
|
||||
execveBin = name: cfg:
|
||||
pkgs.execve name (cfg // { destination = "/bin/${name}"; });
|
||||
execBin = name: cfg:
|
||||
pkgs.exec name (cfg // { destination = "/bin/${name}"; });
|
||||
|
||||
makeScriptWriter = { interpreter, check ? null }: name: text:
|
||||
assert (with types; either absolute-pathname filename).check name;
|
||||
|
||||
Reference in New Issue
Block a user