[libvirt] [PATCH v2 03/20] virlog: Introduce virLogFilterNew

John Ferlan jferlan at redhat.com
Wed Sep 21 17:58:13 UTC 2016



On 08/18/2016 07:47 AM, Erik Skultety wrote:
> This method allocated a new filter object which it then returns back to caller.

s/allocated/allocates

> 
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
>  src/libvirt_private.syms |  2 ++
>  src/util/virlog.c        | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>  src/util/virlog.h        |  3 +++
>  3 files changed, 51 insertions(+)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index b5cee5f..088f9f3 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1845,6 +1845,8 @@ virLockSpaceReleaseResourcesForOwner;
>  virLogDefineFilter;
>  virLogDefineOutput;
>  virLogFilterFree;
> +virLogFilterListFree;

^^  This is unrelated (so far) it seems...

> +virLogFilterNew;
>  virLogGetDefaultPriority;
>  virLogGetFilters;
>  virLogGetNbFilters;
> diff --git a/src/util/virlog.c b/src/util/virlog.c
> index 91c63a1..e4dc84b 100644
> --- a/src/util/virlog.c
> +++ b/src/util/virlog.c
> @@ -1604,3 +1604,49 @@ virLogOutputNew(virLogOutputFunc f,
>  
>      return ret;
>  }
> +
> +
> +/**
> + * virLogFilterNew:
> + * @match: the pattern to match
> + * @priority: the priority to give to messages matching the pattern
> + * @flags: extra flags, see virLogFilterFlags enum
> + *
> + * Allocates and returns a new log filter object. The object has to be later
> + * defined, so that the pattern will be taken into account when executing the
> + * log filters (to select or reject a particular message) on messages.
> + *
> + * The filter defines a rules that will apply only to messages matching
> + * the pattern (currently if @match is a substring of the message category)
> + *
> + * Returns a reference to a newly created filter that needs to be defined using
> + * virLogDefineFilters, or NULL in case of an error.
> + */
> +virLogFilterPtr
> +virLogFilterNew(const char *match,
> +                virLogPriority priority,
> +                unsigned int flags)
> +{
> +    virLogFilterPtr ret = NULL;
> +    char *mdup = NULL;
> +
> +    virCheckFlags(VIR_LOG_STACK_TRACE, NULL);
> +
> +    if ((match == NULL) || (priority < VIR_LOG_DEBUG) ||
> +        (priority > VIR_LOG_ERROR))
> +        return NULL;

Similar to previous patch, no reason for failure, but the following two
do provide a failure reason as would the failure from virCheckFlags. So
add some sort of error message if "priority" is out of range before
returning NULL

Also I would do the ATTRIBUTE_NONNULL(1) trick and avoid the failure due
to !match

> +
> +    if (VIR_STRDUP_QUIET(mdup, match) < 0)
> +        return NULL;
> +
> +    if (VIR_ALLOC_QUIET(ret) < 0) {
> +        VIR_FREE(mdup);
> +        return NULL;
> +    }
> +
> +    ret->match = mdup;
> +    ret->priority = priority;
> +    ret->flags = flags;
> +
> +    return ret;
> +}
> diff --git a/src/util/virlog.h b/src/util/virlog.h
> index fb32c41..a56d297 100644
> --- a/src/util/virlog.h
> +++ b/src/util/virlog.h
> @@ -232,5 +232,8 @@ virLogOutputPtr virLogOutputNew(virLogOutputFunc f,
>                                  virLogPriority priority,
>                                  virLogDestination dest,
>                                  const char *name);
> +virLogFilterPtr virLogFilterNew(const char *match,
> +                                virLogPriority priority,
> +                                unsigned int flags);

s/;/ ATTRIBUTE_NONNULL(1);

ACK with the adjustments,

John

>  
>  #endif
> 




More information about the libvir-list mailing list