[Libguestfs] [PATCH] daemon: add CLEANUP_CLOSE

Richard W.M. Jones rjones at redhat.com
Fri Aug 8 18:30:56 UTC 2014


On Fri, Aug 08, 2014 at 04:03:52PM +0200, Pino Toscano wrote:
> Just call close on the specified fd, if valid.
> ---
>  daemon/daemon.h   | 3 +++
>  daemon/guestfsd.c | 9 +++++++++
>  2 files changed, 12 insertions(+)
> 
> diff --git a/daemon/daemon.h b/daemon/daemon.h
> index fb74e91..0caad45 100644
> --- a/daemon/daemon.h
> +++ b/daemon/daemon.h
> @@ -173,6 +173,7 @@ asprintf_nowarn (char **strp, const char *fmt, ...)
>  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);
>  
>  /*-- in names.c (auto-generated) --*/
>  extern const char *function_names[];
> @@ -405,10 +406,12 @@ is_zero (const char *buffer, size_t size)
>  #define CLEANUP_FREE_STRING_LIST                        \
>      __attribute__((cleanup(cleanup_free_string_list)))
>  #define CLEANUP_UNLINK_FREE __attribute__((cleanup(cleanup_unlink_free)))
> +#define CLEANUP_CLOSE __attribute__((cleanup(cleanup_close)))
>  #else
>  #define CLEANUP_FREE
>  #define CLEANUP_FREE_STRING_LIST
>  #define CLEANUP_UNLINK_FREE
> +#define CLEANUP_CLOSE
>  #endif
>  
>  #endif /* GUESTFSD_DAEMON_H */
> diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
> index 622bda1..0a59c84 100644
> --- a/daemon/guestfsd.c
> +++ b/daemon/guestfsd.c
> @@ -1482,3 +1482,12 @@ cleanup_unlink_free (void *ptr)
>      free (filename);
>    }
>  }
> +
> +void
> +cleanup_close (void *ptr)
> +{
> +  int fd = * (int *) ptr;
> +
> +  if (fd >= 0)
> +    close (fd);
> +}
> -- 

ACK.

I needed this -- I don't at the moment remember what for, but it might
have been for an earlier version of qemu-speed-test.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
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