[Libguestfs] [PATCH 1/2] mllib: add an hook to cleanup directories on exit

Richard W.M. Jones rjones at redhat.com
Thu Feb 20 16:27:54 UTC 2014


On Thu, Feb 20, 2014 at 04:34:51PM +0100, Pino Toscano wrote:
> Much similar to unlink_on_exit, but recursively cleaning directories.
> ---
>  mllib/common_utils.ml | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml
> index 3943417..de3bd40 100644
> --- a/mllib/common_utils.ml
> +++ b/mllib/common_utils.ml
> @@ -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
> -- 
> 1.8.3.1

I think this is better, so:  ACK.

Thanks, Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW




More information about the Libguestfs mailing list