From c27a9416e8ee04d708b11b48f8cf1a055c0cc079 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 16 Sep 2018 01:44:08 +0200 Subject: pkgs: execve -> exec --- pkgs/default.nix | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 29457ca..a5582f3 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -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 @@ -16,18 +16,24 @@ pkgs: oldpkgs: { static char *const argv[] = ${toC (argv ++ [null])}; ''} - static char *const envp[] = ${toC ( - mapAttrsToList (k: v: "${k}=${v}") envp ++ [null] - )}; + ${optionalString (envp != null) /* c */ '' + static char *const envp[] = ${toC ( + mapAttrsToList (k: v: "${k}=${v}") envp ++ [null] + )}; + ''} int main (MAIN_ARGS) { - execve(filename, argv, envp); + ${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; -- cgit v1.2.3