[libvirt] [PATCH RFC 1/2] util: Add VIR_ENUM_IMPL_LABEL
Michal Privoznik
mprivozn at redhat.com
Fri Jul 27 09:17:11 UTC 2018
On 07/26/2018 07:49 PM, Cole Robinson wrote:
> This allows passing in a string label describing the enum, which can
> be used to autogenerate error messages
>
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---
> src/util/virutil.c | 20 ++++++++++++++++----
> src/util/virutil.h | 15 ++++++++++-----
> 2 files changed, 26 insertions(+), 9 deletions(-)
>
> diff --git a/src/util/virutil.c b/src/util/virutil.c
> index a908422feb..6d23a26a74 100644
> --- a/src/util/virutil.c
> +++ b/src/util/virutil.c
> @@ -444,16 +444,22 @@ virParseVersionString(const char *str, unsigned long *version,
>
> int virEnumFromString(const char *const*types,
> unsigned int ntypes,
> - const char *type)
> + const char *type,
> + const char * const label)
> {
> size_t i;
> if (!type)
> - return -1;
> + goto error;
>
> for (i = 0; i < ntypes; i++)
> if (STREQ(types[i], type))
> return i;
>
> + error:
> + if (label) {
If we rewrite all of our enums into _LABEL then @label is always going
to be non-NULL. But we need this check for now. We are not there yet.
> + virReportError(VIR_ERR_INVALID_ARG,
> + _("Unknown '%s' value '%s'"), label, type);
@type can be NULL, therefore NULLSTR(type).
> + }
> return -1;
> }
>
Michal
More information about the libvir-list
mailing list