util: storagefile: Modify arguments of virStorageSourceNewFromBackingAbsolue

Return the parsed storage source via an pointer in arguments and return
an integer from the function. Describe the semantics with a comment for
the function and adjust callers to the new semantics.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2019-08-15 16:43:40 +02:00
parent dddc552400
commit 5265743daa
4 changed files with 32 additions and 19 deletions

View File

@ -3635,22 +3635,32 @@ virStorageSourceParseBackingJSON(virStorageSourcePtr src,
} }
virStorageSourcePtr /**
virStorageSourceNewFromBackingAbsolute(const char *path) * virStorageSourceNewFromBackingAbsolute
* @path: string representing absolute location of a storage source
* @src: filled with virStorageSource object representing @path
*
* Returns 0 on success and fills @src or -1 on error and reports appropriate
* error.
*/
int
virStorageSourceNewFromBackingAbsolute(const char *path,
virStorageSourcePtr *src)
{ {
const char *json; const char *json;
virStorageSourcePtr ret = NULL;
int rc; int rc;
VIR_AUTOUNREF(virStorageSourcePtr) def = NULL; VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
*src = NULL;
if (!(def = virStorageSourceNew())) if (!(def = virStorageSourceNew()))
return NULL; return -1;
if (virStorageIsFile(path)) { if (virStorageIsFile(path)) {
def->type = VIR_STORAGE_TYPE_FILE; def->type = VIR_STORAGE_TYPE_FILE;
if (VIR_STRDUP(def->path, path) < 0) if (VIR_STRDUP(def->path, path) < 0)
return NULL; return -1;
} else { } else {
def->type = VIR_STORAGE_TYPE_NETWORK; def->type = VIR_STORAGE_TYPE_NETWORK;
@ -3665,7 +3675,7 @@ virStorageSourceNewFromBackingAbsolute(const char *path)
rc = virStorageSourceParseBackingColon(def, path); rc = virStorageSourceParseBackingColon(def, path);
if (rc < 0) if (rc < 0)
return NULL; return -1;
virStorageSourceNetworkAssignDefaultPorts(def); virStorageSourceNetworkAssignDefaultPorts(def);
@ -3678,8 +3688,8 @@ virStorageSourceNewFromBackingAbsolute(const char *path)
} }
} }
VIR_STEAL_PTR(ret, def); VIR_STEAL_PTR(*src, def);
return ret; return 0;
} }
@ -3704,14 +3714,15 @@ virStorageSourceNewFromBacking(virStorageSourcePtr parent,
*backing = NULL; *backing = NULL;
if (virStorageIsRelative(parent->backingStoreRaw)) if (virStorageIsRelative(parent->backingStoreRaw)) {
def = virStorageSourceNewFromBackingRelative(parent, if (!(def = virStorageSourceNewFromBackingRelative(parent,
parent->backingStoreRaw); parent->backingStoreRaw)))
else return -1;
def = virStorageSourceNewFromBackingAbsolute(parent->backingStoreRaw); } else {
if (virStorageSourceNewFromBackingAbsolute(parent->backingStoreRaw,
if (!def) &def) < 0)
return -1; return -1;
}
/* possibly update local type */ /* possibly update local type */
if (def->type == VIR_STORAGE_TYPE_FILE) { if (def->type == VIR_STORAGE_TYPE_FILE) {

View File

@ -473,7 +473,8 @@ int virStorageFileGetRelativeBackingPath(virStorageSourcePtr from,
int virStorageFileCheckCompat(const char *compat); int virStorageFileCheckCompat(const char *compat);
virStorageSourcePtr virStorageSourceNewFromBackingAbsolute(const char *path); int virStorageSourceNewFromBackingAbsolute(const char *path,
virStorageSourcePtr *src);
bool virStorageSourceIsRelative(virStorageSourcePtr src); bool virStorageSourceIsRelative(virStorageSourcePtr src);

View File

@ -85,7 +85,8 @@ testBackingXMLjsonXML(const void *args)
if (virAsprintf(&protocolwrapper, "json:%s", propsstr) < 0) if (virAsprintf(&protocolwrapper, "json:%s", propsstr) < 0)
return -1; return -1;
if (!(jsonsrc = virStorageSourceNewFromBackingAbsolute(protocolwrapper))) { if (virStorageSourceNewFromBackingAbsolute(protocolwrapper,
&jsonsrc) < 0) {
fprintf(stderr, "failed to parse disk json\n"); fprintf(stderr, "failed to parse disk json\n");
return -1; return -1;
} }

View File

@ -613,7 +613,7 @@ testBackingParse(const void *args)
VIR_AUTOFREE(char *) xml = NULL; VIR_AUTOFREE(char *) xml = NULL;
VIR_AUTOUNREF(virStorageSourcePtr) src = NULL; VIR_AUTOUNREF(virStorageSourcePtr) src = NULL;
if (!(src = virStorageSourceNewFromBackingAbsolute(data->backing))) { if (virStorageSourceNewFromBackingAbsolute(data->backing, &src) < 0) {
if (!data->expect) if (!data->expect)
return 0; return 0;
else else