aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgareuselesinge2013-08-30 12:20:06 +0000
committergareuselesinge2013-08-30 12:20:06 +0000
commite458f2e2beb65e49c4bb45c54ab07ce3b0b8a9bb (patch)
tree12fd0907551d091bda28cecdf9dc26983a05599d
parent5157b587bea1dd41635961ba1b01f85c6917c88e (diff)
-coq-slaves: close_on_exec + correct argument passing
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16742 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--toplevel/stm.ml15
1 files changed, 13 insertions, 2 deletions
diff --git a/toplevel/stm.ml b/toplevel/stm.ml
index 48e7403ce6..1b075276c2 100644
--- a/toplevel/stm.ml
+++ b/toplevel/stm.ml
@@ -546,8 +546,19 @@ end = struct (* {{{ *)
let respawn () =
let c2s_r, c2s_w = Unix.pipe () in
let s2c_r, s2c_w = Unix.pipe () in
- let prog, args =
- Sys.argv.(0), [|Sys.argv.(0);"-debug";"-coq-slaves";"1"|] in
+ Unix.set_close_on_exec c2s_w;
+ Unix.set_close_on_exec s2c_r;
+ let prog = Sys.argv.(0) in
+ let rec set_slave_opt = function
+ | [] -> ["-coq-slaves";"1"]
+ | ("-ideslave"|"-emacs"|"-emacs-U")::tl -> set_slave_opt tl
+ | ("-coq-slaves"
+ |"-compile"
+ |"-compile-verbose")::_::tl -> set_slave_opt tl
+ | x::tl -> x :: set_slave_opt tl in
+ let args = Array.of_list (set_slave_opt (Array.to_list Sys.argv)) in
+ prerr_endline ("EXEC: " ^ prog ^ " " ^
+ (String.concat " " (Array.to_list args)));
let pid = Unix.create_process prog args c2s_r s2c_w Unix.stderr in
Unix.close c2s_r;
Unix.close s2c_w;