static int testCompareFiles(virArch hostmachine, const char *xml_rel, const char *cpuinfo_rel, const char *capabilities_rel) { char *expectxml = NULL; char *actualxml = NULL; FILE *fp1 = NULL, *fp2 = NULL; virCapsPtr caps = NULL; int ret = -1; char *xml = NULL; char *cpuinfo = NULL; char *capabilities = NULL; if (virAsprintf(&xml, "%s/%s", abs_srcdir, xml_rel) < 0 || virAsprintf(&cpuinfo, "%s/%s", abs_srcdir, cpuinfo_rel) < 0 || virAsprintf(&capabilities, "%s/%s", abs_srcdir, capabilities_rel) < 0) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (!(fp1 = fopen(cpuinfo, "r"))) goto fail; if (!(fp2 = fopen(capabilities, "r"))) goto fail; if (!(caps = xenHypervisorMakeCapabilitiesInternal(NULL, hostmachine, fp1, fp2))) goto fail; if (!(actualxml = virCapabilitiesFormatXML(caps))) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: VIR_FREE(expectxml); VIR_FREE(actualxml); VIR_FREE(xml); VIR_FREE(cpuinfo); VIR_FREE(capabilities); VIR_FORCE_FCLOSE(fp1); VIR_FORCE_FCLOSE(fp2); virObjectUnref(caps); return ret; }
static int testCompareFiles(const char *hostmachine, const char *xml_rel, const char *cpuinfo_rel, const char *capabilities_rel) { char xmlData[MAX_FILE]; char *expectxml = &(xmlData[0]); char *actualxml = NULL; FILE *fp1 = NULL, *fp2 = NULL; virCapsPtr caps = NULL; int ret = -1; char xml[PATH_MAX]; char cpuinfo[PATH_MAX]; char capabilities[PATH_MAX]; snprintf(xml, sizeof xml - 1, "%s/%s", abs_srcdir, xml_rel); snprintf(cpuinfo, sizeof cpuinfo - 1, "%s/%s", abs_srcdir, cpuinfo_rel); snprintf(capabilities, sizeof capabilities - 1, "%s/%s", abs_srcdir, capabilities_rel); if (virtTestLoadFile(xml, &expectxml, MAX_FILE) < 0) goto fail; if (!(fp1 = fopen(cpuinfo, "r"))) goto fail; if (!(fp2 = fopen(capabilities, "r"))) goto fail; if (!(caps = xenHypervisorMakeCapabilitiesInternal(NULL, hostmachine, fp1, fp2))) goto fail; if (!(actualxml = virCapabilitiesFormatXML(caps))) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: free(actualxml); VIR_FORCE_FCLOSE(fp1); VIR_FORCE_FCLOSE(fp2); virCapabilitiesFree(caps); return ret; }