diff options
| -rw-r--r-- | pkgs/default.nix | 20 | 
1 files changed, 13 insertions, 7 deletions
| diff --git a/pkgs/default.nix b/pkgs/default.nix index 10465a6..ea3421b 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 <unistd.h> @@ -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; | 
