diff options
Diffstat (limited to 'otherlibs/unix/execvp.c')
-rw-r--r-- | otherlibs/unix/execvp.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/otherlibs/unix/execvp.c b/otherlibs/unix/execvp.c index 579f08faa..870075bd9 100644 --- a/otherlibs/unix/execvp.c +++ b/otherlibs/unix/execvp.c @@ -13,9 +13,10 @@ #include <mlvalues.h> #include <memory.h> -#include "unix.h" +#include "unixsupport.h" extern char ** cstringvect(); +extern char ** environ; value unix_execvp(path, args) /* ML */ value path, args; @@ -29,3 +30,20 @@ value unix_execvp(path, args) /* ML */ /* from smart compilers */ } +value unix_execvpe(path, args, env) /* ML */ + value path, args, env; +{ + char ** argv; + char ** saved_environ; + argv = cstringvect(args); + saved_environ = environ; + environ = cstringvect(env); + (void) execvp(String_val(path), argv); + stat_free((char *) argv); + stat_free((char *) environ); + environ = saved_environ; + uerror("execvp", path); + return Val_unit; /* never reached, but suppress warnings */ + /* from smart compilers */ +} + |