qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v1 06/25] error: Add error_printf_fn()


From: Eric Blake
Subject: Re: [Qemu-devel] [RFC PATCH v1 06/25] error: Add error_printf_fn()
Date: Fri, 11 Sep 2015 10:10:17 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

On 09/10/2015 11:33 PM, Peter Crosthwaite wrote:
> Add an API to report an error with a custom printf function. Use
> this for the implementation of error_report_err().
> 
> Signed-off-by: Peter Crosthwaite <address@hidden>
> ---
> 
>  include/qapi/error.h |  7 +++++++
>  util/error.c         | 22 ++++++++++++++++++++--
>  2 files changed, 27 insertions(+), 2 deletions(-)

Sounds independently useful.

> 
> diff --git a/include/qapi/error.h b/include/qapi/error.h
> index b25c72f..0e5c311 100644
> --- a/include/qapi/error.h
> +++ b/include/qapi/error.h
> @@ -94,6 +94,13 @@ const char *error_get_pretty(Error *err);
>  void error_report_err(Error *);
>  
>  /**
> + * Report an and free an error object using a custom printf implementation.

s/an and/and/

> + */
> +
> +void error_printf_fn(Error *err, void (*printf_fn)(void *, const char *, 
> ...),
> +                     void *printf_opaque);
> +
> +/**
>   * Propagate an error to an indirect pointer to an error.  This function will
>   * always transfer ownership of the error reference and handles the case 
> where
>   * dst_err is NULL correctly.  Errors after the first are discarded.
> diff --git a/util/error.c b/util/error.c
> index e9c23ce..c4656af 100644
> --- a/util/error.c

> +void error_printf_fn(Error *err, void (*printf_fn)(void *, const char *, 
> ...),
> +                     void *printf_opaque)
> +{
> +    if (err->next) {
> +        error_printf_fn(err->next, printf_fn, printf_opaque);
> +    }
> +    printf_fn(printf_opaque, "%s\n", error_get_pretty(err));
> +    error_free(err);
> +}

Of course, if you rebase this to come independent of multi-error, it
won't need the first 'if'. But it looks like a reasonable factorization.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]