test_driver: Rewrite testBuildFilename
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>
This commit is contained in:
parent
bf5374d736
commit
c800ed6399
@ -739,32 +739,14 @@ testDomainStartState(testDriverPtr privconn,
|
|||||||
static char *testBuildFilename(const char *relativeTo,
|
static char *testBuildFilename(const char *relativeTo,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
char *offset;
|
g_autofree char *basename = NULL;
|
||||||
int baseLen;
|
|
||||||
char *ret;
|
|
||||||
|
|
||||||
if (!filename || filename[0] == '\0')
|
if (g_path_is_absolute(filename))
|
||||||
return NULL;
|
return g_strdup(filename);
|
||||||
if (filename[0] == '/') {
|
|
||||||
ret = g_strdup(filename);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
offset = strrchr(relativeTo, '/');
|
basename = g_path_get_dirname(relativeTo);
|
||||||
if ((baseLen = (offset-relativeTo+1))) {
|
|
||||||
char *absFile;
|
return g_strdup_printf("%s/%s", basename, filename);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static xmlNodePtr
|
static xmlNodePtr
|
||||||
@ -777,11 +759,6 @@ testParseXMLDocFromFile(xmlNodePtr node, const char *file, const char *type)
|
|||||||
|
|
||||||
if ((relFile = virXMLPropString(node, "file"))) {
|
if ((relFile = virXMLPropString(node, "file"))) {
|
||||||
absFile = testBuildFilename(file, relFile);
|
absFile = testBuildFilename(file, relFile);
|
||||||
if (!absFile) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("resolving %s filename"), type);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(doc = virXMLParse(absFile, NULL, type)))
|
if (!(doc = virXMLParse(absFile, NULL, type)))
|
||||||
goto error;
|
goto error;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user