aboutsummaryrefslogtreecommitdiff
path: root/lib/system.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/system.ml')
-rw-r--r--lib/system.ml28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/system.ml b/lib/system.ml
index ab24f734c7..0f005bd47f 100644
--- a/lib/system.ml
+++ b/lib/system.ml
@@ -27,6 +27,8 @@ let search_in_path path filename =
in
search path
+let where_in_path = search_in_path
+
let find_file_in_path name =
let globname = glob name in
if not (Filename.is_relative globname) then
@@ -39,9 +41,35 @@ let find_file_in_path name =
(hOV 0 [< 'sTR"Can't find file" ; 'sPC ; 'sTR name ; 'sPC ;
'sTR"on loadpath" >])
+let is_in_path lpath filename =
+ try
+ let _ = search_in_path lpath filename in true
+ with
+ Not_found -> false
+
let make_suffix name suffix =
if Filename.check_suffix name suffix then name else (name ^ suffix)
+(*Gives the list of all the directories under dir*)
+let alldir dir =
+ let ini = Unix.getcwd()
+ and tmp = Filename.temp_file "coq" "rec"
+ and lst = ref [] in
+ Unix.chdir dir;
+ let bse = Unix.getcwd() in
+ let _ = Sys.command ("find "^bse^" -type d >> "^tmp) in
+ let inf = open_in tmp in
+ try
+ while true do
+ lst := !lst @ [input_line inf]
+ done;
+ []
+ with End_of_file ->
+ close_in inf;
+ Sys.remove tmp;
+ Unix.chdir ini;
+ !lst
+
let open_trapping_failure open_fun name suffix =
let rname = make_suffix name suffix in
try open_fun rname with _ -> error ("Can't open " ^ rname)