blob: 3b9ca9a49423d7164c80dd228e51a2e9608c00c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
(* TEST
unset FOO;
unset FOO2;
include unix;
flags += "-strict-sequence -w +A-70 -warn-error +A";
modules = "stubs.c";
libwin32unix;
{
bytecode;
}{
native;
}
*)
external set_environment_variable: string -> string -> unit
= "stub_SetEnvironmentVariable"
let find_env s =
let env = Unix.environment () in
let rec loop i =
if i >= Array.length env then
None
else begin
let e = env.(i) in
let pos = String.index e '=' in
if String.sub e 0 pos = s then
Some (String.sub e (pos+1) (String.length e - pos - 1))
else
loop (i+1)
end
in
loop 0
let print title = function
| None ->
Printf.printf "%s -> None\n%!" title
| Some s ->
Printf.printf "%s -> Some %S\n%!" title s
let () =
set_environment_variable "FOO" "BAR";
Unix.putenv "FOO2" "BAR2";
print "Sys.getenv FOO" (Sys.getenv_opt "FOO");
print "Unix.environment FOO" (find_env "FOO");
print "Sys.getenv FOO2" (Sys.getenv_opt "FOO2")
|