60 lines
2.0 KiB
OCaml
60 lines
2.0 KiB
OCaml
(***********************************************************************)
|
|
(* *)
|
|
(* Objective Caml *)
|
|
(* *)
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
(* *)
|
|
(* Copyright 2001 Institut National de Recherche en Informatique et *)
|
|
(* en Automatique. All rights reserved. This file is distributed *)
|
|
(* under the terms of the Q Public License version 1.0. *)
|
|
(* *)
|
|
(***********************************************************************)
|
|
|
|
(* $Id$ *)
|
|
|
|
(* Handling of load path for dynamically-linked libraries *)
|
|
|
|
(* Read the [ld.conf] file and return the corresponding list of directories *)
|
|
|
|
let ld_conf_contents () =
|
|
let path = ref [] in
|
|
begin try
|
|
let ic = open_in (Filename.concat Config.standard_library "ld.conf") in
|
|
begin try
|
|
while true do
|
|
path := input_line ic :: !path
|
|
done
|
|
with End_of_file -> ()
|
|
end;
|
|
close_in ic
|
|
with Sys_error _ -> ()
|
|
end;
|
|
List.rev !path
|
|
|
|
(* Split the CAML_LD_LIBRARY_PATH environment variable and return
|
|
the corresponding list of directories. *)
|
|
|
|
let split str sep =
|
|
let rec split_rec pos =
|
|
if pos >= String.length str then [] else begin
|
|
try
|
|
let newpos = String.index_from str pos sep in
|
|
String.sub str pos (newpos - pos) ::
|
|
split_rec (newpos + 1)
|
|
with Not_found ->
|
|
[String.sub str pos (String.length str - pos)]
|
|
end in
|
|
split_rec 0
|
|
|
|
let ld_library_path_contents () =
|
|
let path_separator =
|
|
match Sys.os_type with
|
|
"Unix" | "Cygwin" -> ':' | "Win32" -> ';' | _ -> assert false in
|
|
try
|
|
split (Sys.getenv "CAML_LD_LIBRARY_PATH") path_separator
|
|
with Not_found ->
|
|
[]
|
|
|
|
let split_dll_path path =
|
|
split path '\000'
|