[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] Changes to mldonkey/src/config/unix/mlUnix.ml
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] Changes to mldonkey/src/config/unix/mlUnix.ml |
Date: |
Fri, 02 Dec 2005 07:08:27 -0500 |
Index: mldonkey/src/config/unix/mlUnix.ml
diff -u mldonkey/src/config/unix/mlUnix.ml:1.10
mldonkey/src/config/unix/mlUnix.ml:1.11
--- mldonkey/src/config/unix/mlUnix.ml:1.10 Sun Aug 7 17:39:30 2005
+++ mldonkey/src/config/unix/mlUnix.ml Fri Dec 2 12:08:26 2005
@@ -54,14 +54,37 @@
let sock = handler in_read out_write in
sock, id
-let fork_and_exec cmd args =
+let fork_and_exec cmd ?vars args =
+ let env =
+ match vars with
+ | None -> None
+ | Some vars ->
+ (* convert environment to an alist *)
+ let env = List.map (fun kev ->
+ try
+ let len = String.length kev in
+ let equal_sign = String.index kev '=' in
+ (String.sub kev 0 equal_sign,
+ String.sub kev (equal_sign + 1) (len - 1 - equal_sign))
+ with Not_found -> (* May that happen ? *)
+ (kev, "")
+ ) (Array.to_list (Unix.environment ())) in
+ (* update parent's environment with vars alist *)
+ let env = List.fold_left (fun acc ((k, v) as assoc) ->
+ assoc :: List.remove_assoc k acc
+ ) env vars in
+ Some (Array.of_list (List.map (fun (k, v) -> k ^ "=" ^ v) env)) in
match Unix.fork() with
0 -> begin
try
match Unix.fork() with
0 -> begin
try
- Unix.execv cmd args;
+ match env with
+ | None ->
+ Unix.execv cmd args;
+ | Some env ->
+ Unix.execve cmd args env;
exit 0
with e ->
lprintf "Exception %s while starting file_completed_cmd\n"
(Printexc2.to_string e);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Mldonkey-commits] Changes to mldonkey/src/config/unix/mlUnix.ml,
mldonkey-commits <=