[libvirt] [PATCH 1/2] util: storage: split function for JSON backing volume parsing in two

Peter Krempa pkrempa at redhat.com
Wed Feb 22 09:10:41 UTC 2017


On Mon, Feb 13, 2017 at 23:53:42 +0100, Tomáš Golembiovský wrote:
> Split virStorageSourceParseBackingJSON into two functions so that the
> core can be reused by other functions. The new function called
> virStorageSourceParseBackingJSONInternal accepts virJSONValuePtr.
> 
> Signed-off-by: Tomáš Golembiovský <tgolembi at redhat.com>
> ---
>  src/util/virstoragefile.c | 35 +++++++++++++++++++++++++----------
>  1 file changed, 25 insertions(+), 10 deletions(-)
> 
> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index 3d4bda700..3698eeeda 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -3053,29 +3053,28 @@ virStorageSourceParseBackingJSONDeflatten(virJSONValuePtr json)
>  
>  
>  static int
> -virStorageSourceParseBackingJSON(virStorageSourcePtr src,
> -                                 const char *json)
> +virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
> +                                         virJSONValuePtr json)
>  {
> -    virJSONValuePtr root = NULL;
>      virJSONValuePtr fixedroot = NULL;
>      virJSONValuePtr file;
>      const char *drvname;
>      size_t i;
>      int ret = -1;
>  
> -    if (!(root = virJSONValueFromString(json)))
> -        return -1;
> -
> -    if (!(file = virJSONValueObjectGetObject(root, "file"))) {
> -        if (!(fixedroot = virStorageSourceParseBackingJSONDeflatten(root)))
> +    if (!(file = virJSONValueObjectGetObject(json, "file"))) {
> +        if (!(fixedroot = virStorageSourceParseBackingJSONDeflatten(json)))
>              goto cleanup;
>  
>          file = fixedroot;
>      }
>  
>      if (!(drvname = virJSONValueObjectGetString(file, "driver"))) {
> +        char *str = virJSONValueToString(json, false);

We usually declare variables at the top.

>          virReportError(VIR_ERR_INVALID_ARG, _("JSON backing volume defintion "
> -                                              "'%s' lacks driver name"), json);
> +                                              "'%s' lacks driver name"),
> +            NULLSTR(str));

Broken formatting.

> +        VIR_FREE(str);
>          goto cleanup;
>      }
>  
> @@ -3091,12 +3090,28 @@ virStorageSourceParseBackingJSON(virStorageSourcePtr src,
>                       "driver '%s'"), drvname);
>  
>   cleanup:
> -    virJSONValueFree(root);
>      virJSONValueFree(fixedroot);
>      return ret;
>  }
>  
>  
> +static int
> +virStorageSourceParseBackingJSON(virStorageSourcePtr src,
> +                                 const char *json)
> +{
> +    virJSONValuePtr root = NULL;
> +    int ret = -1;
> +
> +    if (!(root = virJSONValueFromString(json)))
> +        return -1;
> +
> +    ret = virStorageSourceParseBackingJSONInternal(src, root);
> +
> +    virJSONValueFree(root);
> +    return ret;
> +}
> +
> +
>  virStorageSourcePtr
>  virStorageSourceNewFromBackingAbsolute(const char *path)
>  {

ACK, I'll fix the stuff pointed out prior to pushing.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170222/02fb8774/attachment-0001.sig>


More information about the libvir-list mailing list