Re: [Libguestfs] [PATCH 1/5] daemon: make aug_close cleanup available for all

Richard W.M. Jones
2014-09-05T12:05:21Z

On Thu, Sep 04, 2014 at 05:18:27PM +0200, Pino Toscano
wrote:
> Just code motion, no behaviour changes.
> ---
>  daemon/daemon.h     |  3 +++
>  daemon/guestfsd.c   | 11 +++++++++++
>  daemon/lvm-filter.c | 16 ----------------
>  3 files changed, 14 insertions(+), 16 deletions(-)
>
> diff --git a/daemon/daemon.h b/daemon/daemon.h
> index d90b3e7..b9e7402 100644
> --- a/daemon/daemon.h
> +++ b/daemon/daemon.h
> @@ -176,6 +176,7 @@ extern void cleanup_free (void *ptr);
>  extern void cleanup_free_string_list (void *ptr);
>  extern void cleanup_unlink_free (void *ptr);
>  extern void cleanup_close (void *ptr);
> +extern void cleanup_aug_close (void *ptr);
>
>  /*-- in names.c (auto-generated) --*/
>  extern const char *function_names[];
> @@ -426,11 +427,13 @@ is_zero (const char *buffer, size_t size)
>      __attribute__((cleanup(cleanup_free_string_list)))
>  #define CLEANUP_UNLINK_FREE __attribute__((cleanup(cleanup_unlink_free)))
>  #define CLEANUP_CLOSE __attribute__((cleanup(cleanup_close)))
> +#define CLEANUP_AUG_CLOSE __attribute__((cleanup(cleanup_aug_close)))
>  #else
>  #define CLEANUP_FREE
>  #define CLEANUP_FREE_STRING_LIST
>  #define CLEANUP_UNLINK_FREE
>  #define CLEANUP_CLOSE
> +#define CLEANUP_AUG_CLOSE
>  #endif
>
>  #endif /* GUESTFSD_DAEMON_H */
> diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
> index 321544f..34a47ab 100644
> --- a/daemon/guestfsd.c
> +++ b/daemon/guestfsd.c
> @@ -47,6 +47,8 @@
>  # include <printf.h>
>  #endif
>
> +#include <augeas.h>
> +
>  #include "sockets.h"
>  #include "c-ctype.h"
>  #include "ignore-value.h"
> @@ -1511,3 +1513,12 @@ cleanup_close (void *ptr)
>    if (fd >= 0)
>      close (fd);
>  }
> +
> +void
> +cleanup_aug_close (void *ptr)
> +{
> +  augeas *aug = * (augeas **) ptr;
> +
> +  if (aug != NULL)
> +    aug_close (aug);
> +}
> diff --git a/daemon/lvm-filter.c b/daemon/lvm-filter.c
> index 3bab9bf..3b117c5 100644
> --- a/daemon/lvm-filter.c
> +++ b/daemon/lvm-filter.c
> @@ -33,22 +33,6 @@
>  #include "daemon.h"
>  #include "actions.h"
>
> -#ifdef HAVE_ATTRIBUTE_CLEANUP
> -#define CLEANUP_AUG_CLOSE __attribute__((cleanup(cleanup_aug_close)))
> -
> -static void
> -cleanup_aug_close (void *ptr)
> -{
> -  augeas *aug = * (augeas **) ptr;
> -
> -  if (aug != NULL)
> -    aug_close (aug);
> -}
> -
> -#else
> -#define CLEANUP_AUG_CLOSE
> -#endif
> -
>  GUESTFSD_EXT_CMD(str_lvm, lvm);
>  GUESTFSD_EXT_CMD(str_cp, cp);
>  GUESTFSD_EXT_CMD(str_rm, rm);
> --
> 1.9.3

ACK.

Rich.

--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.