mllib: add an hook to cleanup directories on exit

Much similar to unlink_on_exit, but recursively cleaning directories.
This commit is contained in:
Pino Toscano
2014-02-20 11:37:49 +01:00
parent 4c5a6afc84
commit 7f77f4fb28

View File

@@ -386,6 +386,29 @@ let unlink_on_exit =
registered_handlers := true
)
(* Remove a temporary directory on exit. *)
let rmdir_on_exit =
let dirs = ref [] in
let registered_handlers = ref false in
let rec rmdirs () =
List.iter (
fun dir ->
let cmd = sprintf "rm -rf %s" (Filename.quote dir) in
ignore (Sys.command cmd)
) !dirs
and register_handlers () =
(* Remove on exit. *)
at_exit rmdirs
in
fun dir ->
dirs := dir :: !dirs;
if not !registered_handlers then (
register_handlers ();
registered_handlers := true
)
(* Using the libguestfs API, recursively remove only files from the
* given directory. Useful for cleaning /var/cache etc in sysprep
* without removing the actual directory structure. Also if 'dir' is