]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
test_driver: Rewrite testBuildFilename
authorPeter Krempa <pkrempa@redhat.com>
Tue, 2 Mar 2021 12:13:50 +0000 (13:13 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 5 Mar 2021 14:01:29 +0000 (15:01 +0100)
Use glib functions to do the relative name lookup instead of manual
assembly.

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

index 2c430925123b1ddbf720029cbf1f2eca80a67ffb..2c1b4cb525815e42f3e9724aac8c7084c66a1a1e 100644 (file)
@@ -739,32 +739,14 @@ testDomainStartState(testDriverPtr privconn,
 static char *testBuildFilename(const char *relativeTo,
                                const char *filename)
 {
-    char *offset;
-    int baseLen;
-    char *ret;
+    g_autofree char *basename = NULL;
 
-    if (!filename || filename[0] == '\0')
-        return NULL;
-    if (filename[0] == '/') {
-        ret = g_strdup(filename);
-        return ret;
-    }
+    if (g_path_is_absolute(filename))
+        return g_strdup(filename);
 
-    offset = strrchr(relativeTo, '/');
-    if ((baseLen = (offset-relativeTo+1))) {
-        char *absFile;
-        int totalLen = baseLen + strlen(filename) + 1;
-        absFile = g_new0(char, totalLen);
-        if (virStrncpy(absFile, relativeTo, baseLen, totalLen) < 0) {
-            VIR_FREE(absFile);
-            return NULL;
-        }
-        strcat(absFile, filename);
-        return absFile;
-    } else {
-        ret = g_strdup(filename);
-        return ret;
-    }
+    basename = g_path_get_dirname(relativeTo);
+
+    return g_strdup_printf("%s/%s", basename, filename);
 }
 
 static xmlNodePtr
@@ -777,11 +759,6 @@ testParseXMLDocFromFile(xmlNodePtr node, const char *file, const char *type)
 
     if ((relFile = virXMLPropString(node, "file"))) {
         absFile = testBuildFilename(file, relFile);
-        if (!absFile) {
-            virReportError(VIR_ERR_INTERNAL_ERROR,
-                           _("resolving %s filename"), type);
-            return NULL;
-        }
 
         if (!(doc = virXMLParse(absFile, NULL, type)))
             goto error;