]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: storagefile: Simplify cleanup handling in virStorageSourceParseBackingURI
authorPeter Krempa <pkrempa@redhat.com>
Thu, 15 Aug 2019 14:06:51 +0000 (16:06 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 26 Aug 2019 11:49:16 +0000 (13:49 +0200)
Automatically clean the 'uri' variable and get rid of the 'cleanup'
label.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/util/virstoragefile.c

index 2c9628c71eaf68c583053a01498710d0574ba804..041e03f5f0d91e9bdb864111d4d7f736a1eddfa7 100644 (file)
@@ -2664,32 +2664,31 @@ static int
 virStorageSourceParseBackingURI(virStorageSourcePtr src,
                                 const char *uristr)
 {
-    virURIPtr uri = NULL;
+    VIR_AUTOPTR(virURI) uri = NULL;
     const char *path = NULL;
-    int ret = -1;
     VIR_AUTOSTRINGLIST scheme = NULL;
 
     if (!(uri = virURIParse(uristr))) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("failed to parse backing file location '%s'"),
                        uristr);
-        goto cleanup;
+        return -1;
     }
 
     if (VIR_ALLOC(src->hosts) < 0)
-        goto cleanup;
+        return -1;
 
     src->nhosts = 1;
 
     if (!(scheme = virStringSplit(uri->scheme, "+", 2)))
-        goto cleanup;
+        return -1;
 
     if (!scheme[0] ||
         (src->protocol = virStorageNetProtocolTypeFromString(scheme[0])) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("invalid backing protocol '%s'"),
                        NULLSTR(scheme[0]));
-        goto cleanup;
+        return -1;
     }
 
     if (scheme[1] &&
@@ -2697,13 +2696,13 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("invalid protocol transport type '%s'"),
                        scheme[1]);
-        goto cleanup;
+        return -1;
     }
 
     /* handle socket stored as a query */
     if (uri->query) {
         if (VIR_STRDUP(src->hosts->socket, STRSKIP(uri->query, "socket=")) < 0)
-            goto cleanup;
+            return -1;
     }
 
     /* XXX We currently don't support auth, so don't bother parsing it */
@@ -2725,7 +2724,7 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
         path = NULL;
 
     if (VIR_STRDUP(src->path, path) < 0)
-        goto cleanup;
+        return -1;
 
     if (src->protocol == VIR_STORAGE_NET_PROTOCOL_GLUSTER) {
         char *tmp;
@@ -2733,7 +2732,7 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
         if (!src->path) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("missing volume name and path for gluster volume"));
-            goto cleanup;
+            return -1;
         }
 
         if (!(tmp = strchr(src->path, '/')) ||
@@ -2741,13 +2740,13 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("missing volume name or file name in "
                              "gluster source path '%s'"), src->path);
-            goto cleanup;
+            return -1;
         }
 
         src->volume = src->path;
 
         if (VIR_STRDUP(src->path, tmp + 1) < 0)
-            goto cleanup;
+            return -1;
 
         tmp[0] = '\0';
     }
@@ -2755,13 +2754,9 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
     src->hosts->port = uri->port;
 
     if (VIR_STRDUP(src->hosts->name, uri->server) < 0)
-        goto cleanup;
-
-    ret = 0;
+        return -1;
 
- cleanup:
-    virURIFree(uri);
-    return ret;
+    return 0;
 }