]> xenbits.xensource.com Git - libvirt.git/commitdiff
Create temporary dir for socket
authorGuido Günther <agx@sigxcpu.org>
Mon, 29 Oct 2012 08:28:15 +0000 (09:28 +0100)
committerGuido Günther <agx@sigxcpu.org>
Tue, 30 Oct 2012 18:16:57 +0000 (19:16 +0100)
to avoid ENAMETOOLONG:

https://buildd.debian.org/status/fetch.php?pkg=libvirt&arch=amd64&ver=1.0.0~rc1-1&stamp=1351453521

tests/qemumonitortestutils.c

index 7133c996d13005e452b3a2db4a064d3e717ff92c..93d2f6229bc2e7314082dc986c45f496973c83a2 100644 (file)
@@ -423,10 +423,24 @@ static qemuMonitorCallbacks qemuCallbacks = {
 
 qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
 {
-    qemuMonitorTestPtr test;
-    const char *path = abs_builddir "/qemumonitorjsontest.sock";
+    qemuMonitorTestPtr test = NULL;
     virDomainChrSourceDef src;
 
+    char *tmpdir = NULL, *path = NULL;
+    char template[] = "/tmp/libvirt_XXXXXX";
+
+    tmpdir = mkdtemp(template);
+    if (tmpdir == NULL) {
+        virReportSystemError(errno, "%s",
+                             "Failed to create temporary directory");
+        goto error;
+    }
+
+    if (virAsprintf(&path, "%s/qemumonitorjsontest.sock", tmpdir) < 0) {
+        virReportOOMError();
+        goto error;
+    }
+
     memset(&src, 0, sizeof(src));
     src.type = VIR_DOMAIN_CHR_TYPE_UNIX;
     src.data.nix.path = (char *)path;
@@ -494,11 +508,16 @@ qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
     test->running = true;
     virMutexUnlock(&test->lock);
 
+cleanup:
+    if (tmpdir)
+        if (rmdir(tmpdir) < 0)
+            VIR_WARN("Failed to remove tempdir: %s", strerror(errno));
+    VIR_FREE(path);
     return test;
 
 error:
     qemuMonitorTestFree(test);
-    return NULL;
+    goto cleanup;
 }
 
 qemuMonitorPtr qemuMonitorTestGetMonitor(qemuMonitorTestPtr test)