]> matita.cs.unibo.it Git - helm.git/blob - matita/components/binaries/probe/matitaRemove.ml
lambdadelta
[helm.git] / matita / components / binaries / probe / matitaRemove.ml
1 (*
2     ||M||  This file is part of HELM, an Hypertextual, Electronic        
3     ||A||  Library of Mathematics, developed at the Computer Science     
4     ||T||  Department, University of Bologna, Italy.                     
5     ||I||                                                                
6     ||T||  HELM is free software; you can redistribute it and/or         
7     ||A||  modify it under the terms of the GNU General Public License   
8     \   /  version 2 or (at your option) any later version.      
9      \ /   This software is distributed as is, NO WARRANTY.     
10       V_______________________________________________________________ *)
11
12 module A = Array
13 module F = Filename
14 module Y = Sys
15 module U = Unix
16
17 module O = Options
18
19 let remove_dir dir =
20    let map name = Y.remove (F.concat dir name) in
21    let rec rmdir dir =
22       U.rmdir dir; (* Sys.remove does not seem to remove empty directories *)
23       rmdir (F.dirname dir)
24    in
25    if Y.file_exists dir then begin
26       try A.iter map (Y.readdir dir); rmdir dir
27       with U.Unix_error _ -> ()
28    end
29
30 let objects () =
31    let map name = 
32       Y.remove name;
33       remove_dir (F.chop_extension name)
34    in
35    List.iter map !O.remove