[libvirt] [PATCH REPOST 15/38] virlog: Introduce virLogOutputFree

Cole Robinson crobinso at redhat.com
Tue May 10 00:59:46 UTC 2016


On 05/04/2016 10:30 AM, Erik Skultety wrote:
> Add a complementary method to virLogOutputNew.
> ---
>  src/libvirt_private.syms |  1 +
>  src/util/virlog.c        | 21 ++++++++++++++++-----
>  src/util/virlog.h        |  1 +
>  3 files changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 56dfcf4..b40a405 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1794,6 +1794,7 @@ virLogGetNbOutputs;
>  virLogGetOutputs;
>  virLogLock;
>  virLogMessage;
> +virLogOutputFree;
>  virLogOutputNew;
>  virLogParseDefaultPriority;
>  virLogParseFilters;
> diff --git a/src/util/virlog.c b/src/util/virlog.c
> index e101484..e36ff73 100644
> --- a/src/util/virlog.c
> +++ b/src/util/virlog.c
> @@ -323,16 +323,27 @@ virLogResetOutputs(void)
>  {
>      size_t i;
>  
> -    for (i = 0; i < virLogNbOutputs; i++) {
> -        if (virLogOutputs[i]->c != NULL)
> -            virLogOutputs[i]->c(virLogOutputs[i]->data);
> -        VIR_FREE(virLogOutputs[i]->name);
> -    }
> +    for (i = 0; i < virLogNbOutputs; i++)
> +        virLogOutputFree(virLogOutputs[i]);
> +
>      VIR_FREE(virLogOutputs);
>      virLogNbOutputs = 0;
>  }
>  
>  
> +void
> +virLogOutputFree(virLogOutputPtr output)
> +{
> +    if (!output)
> +        return;
> +
> +    if (output->c)
> +        output->c(output->data);
> +    VIR_FREE(output->name);
> +    VIR_FREE(output);
> +
> +}
> +
>  /**
>   * virLogOutputNew:
>   * @f: the function to call to output a message
> diff --git a/src/util/virlog.h b/src/util/virlog.h
> index 93456db..7573984 100644
> --- a/src/util/virlog.h
> +++ b/src/util/virlog.h
> @@ -195,6 +195,7 @@ extern int virLogOutputNew(virLogOutputFunc f,
>                             virLogDestination dest,
>                             const char *name,
>                             unsigned int flags);
> +extern void virLogOutputFree(virLogOutputPtr output);
>  
>  /*
>   * Internal logging API
> 

ACK

(sidenote: I know you were following existing convention but the usage of
extern forward declarations in the header is confusing to me... my brain is
wired to see header declaration == public function)

- Cole




More information about the libvir-list mailing list