summaryrefslogtreecommitdiffstats
path: root/otherlibs/unix/execvp.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-09-04 14:15:31 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-09-04 14:15:31 +0000
commitac9f8e8094ea19199a24fd5c67053718198ed172 (patch)
treebd3d0fe88168c1a970c3b6809f13562ffa7388cd /otherlibs/unix/execvp.c
parent7fb9cd28d0cfbca9c91a96fefe5a730cab3d4804 (diff)
Renommage unix.h -> unixsupport.h
Petites adaptations pour Win32. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@951 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/unix/execvp.c')
-rw-r--r--otherlibs/unix/execvp.c20
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 */
+}
+