Automatically clean the 'uri' variable and get rid of the 'cleanup'
label.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/util/virstoragefile.c | 31 +++++++++++++------------------
1 file changed, 13 insertions(+), 18 deletions(-)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 8af45bfbd2..e93f6285b0 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -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;
}
--
2.21.0