]> matita.cs.unibo.it Git - helm.git/commitdiff
safe mkdir implemented
authorEnrico Tassi <enrico.tassi@inria.fr>
Wed, 27 Jul 2005 12:26:52 +0000 (12:26 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Wed, 27 Jul 2005 12:26:52 +0000 (12:26 +0000)
helm/matita/matitaMisc.ml

index 1ebe49e39c2e442a1b6a922373c5efe24ba93c74..9ddc268a815265d336cd43348b16caa8b6f5d451 100644 (file)
@@ -114,6 +114,21 @@ let append_phrase_sep s =
   else
     s
 
+let mkdir path =
+  let components = Str.split (Str.regexp "/") path in
+  let rec aux where = function
+    | [] -> ()
+    | piece::tl -> 
+        let path = where ^ "/" ^ piece in
+        (try
+          Unix.mkdir path 755
+        with 
+        | Unix.Unix_error (Unix.EEXIST,_,_) -> ()
+        | Unix.Unix_error (e,_,_) -> raise (Failure (Unix.error_message e)));
+        aux path tl
+  in
+  aux "" components
+
 let strip_trailing_blanks =
   let rex = Pcre.regexp "\\s*$" in
   fun s -> Pcre.replace ~rex s
@@ -231,7 +246,7 @@ class ['a] browser_history ?memento size init =
 let singleton f =
   let instance = lazy (f ()) in
   fun () -> Lazy.force instance
-
+(*
 let mkdir d =
   let errmsg = sprintf "Unable to create directory \"%s\"" d in
   try
@@ -250,7 +265,7 @@ let mkdir d =
     MatitaLog.error 
       ("Unix error in makigin dir " ^ (MatitaExcPp.to_string exc));
     failwith errmsg
-
+*)
 let get_proof_status status =
   match status.proof_status with
   | Incomplete_proof s -> s