]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/components/binaries/probe/matitaRemove.ml
lambdadelta
[helm.git] / matita / components / binaries / probe / matitaRemove.ml
index 1ef87a5ca16efd829c127ca20c104b3760cf64fc..87be455213258ebe0cc6d65f18b77ebe41eabb91 100644 (file)
@@ -17,10 +17,14 @@ module U = Unix
 module O = Options
 
 let remove_dir dir =
+   let map name = Y.remove (F.concat dir name) in
+   let rec rmdir dir =
+      U.rmdir dir; (* Sys.remove does not seem to remove empty directories *)
+      rmdir (F.dirname dir)
+   in
    if Y.file_exists dir then begin
-      let map name = Y.remove (F.concat dir name) in
-      A.iter map (Y.readdir dir);
-      U.rmdir dir (* Sys.remove does not seem to remove empty directories *)
+      try A.iter map (Y.readdir dir); rmdir dir
+      with U.Unix_error _ -> ()
    end
 
 let objects () =