]> matita.cs.unibo.it Git - helm.git/blob - matita/components/binaries/probe/matitaRemove.ml
commit in ground_2, static_2, basic_2, apps_2
[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 rec remove_obj name =
20    try Y.remove name with Sys_error _ -> remove_dir name
21
22 and remove_dir dir =
23    let map name = remove_obj (F.concat dir name) in
24    let rec rmdir dir =
25       U.rmdir dir; (* Sys.remove does not seem to remove empty directories *)
26       rmdir (F.dirname dir)
27    in
28    if Y.file_exists dir then begin
29       try A.iter map (Y.readdir dir); rmdir dir
30       with U.Unix_error _ -> ()
31    end
32
33 let objects () =
34    List.iter remove_obj !O.remove