[libvirt] [PATCH] Create temporary dir for socket

Guido Günther agx at sigxcpu.org
Mon Oct 29 12:05:55 UTC 2012


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 |   22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c
index 7133c99..1369cb7 100644
--- a/tests/qemumonitortestutils.c
+++ b/tests/qemumonitortestutils.c
@@ -424,9 +424,23 @@ static qemuMonitorCallbacks qemuCallbacks = {
 qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
 {
     qemuMonitorTestPtr test;
-    const char *path = abs_builddir "/qemumonitorjsontest.sock";
     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,15 @@ qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
     test->running = true;
     virMutexUnlock(&test->lock);
 
+cleanup:
+    if (tmpdir)
+        rmdir(tmpdir);
+    VIR_FREE(path);
     return test;
 
 error:
     qemuMonitorTestFree(test);
-    return NULL;
+    goto cleanup;
 }
 
 qemuMonitorPtr qemuMonitorTestGetMonitor(qemuMonitorTestPtr test)
-- 
1.7.10.4




More information about the libvir-list mailing list