#define VIR_FROM_THIS VIR_FROM_QEMU
-/* For storing short-lived temporary files. */
-#define TEMPDIR LOCAL_STATE_DIR "/cache/libvirt/qemu"
-
#define QEMU_CMD_PROMPT "\n(qemu) "
#define QEMU_PASSWD_PROMPT "Password: "
if (virAsprintf(&qemu_driver->stateDir,
"%s/run/libvirt/qemu", LOCAL_STATE_DIR) == -1)
goto out_of_memory;
+
+ if (virAsprintf(&qemu_driver->libDir,
+ "%s/lib/libvirt/qemu", LOCAL_STATE_DIR) == -1)
+ goto out_of_memory;
+
+ if (virAsprintf(&qemu_driver->cacheDir,
+ "%s/cache/libvirt/qemu", LOCAL_STATE_DIR) == -1)
+ goto out_of_memory;
} else {
uid_t uid = geteuid();
char *userdir = virGetUserDirectory(NULL, uid);
if (virAsprintf(&qemu_driver->stateDir, "%s/qemu/run", base) == -1)
goto out_of_memory;
+ if (virAsprintf(&qemu_driver->libDir, "%s/qemu/lib", base) == -1)
+ goto out_of_memory;
+ if (virAsprintf(&qemu_driver->cacheDir, "%s/qemu/cache", base) == -1)
+ goto out_of_memory;
}
if (virFileMakePath(qemu_driver->stateDir) < 0) {
qemu_driver->stateDir, virStrerror(errno, ebuf, sizeof ebuf));
goto error;
}
+ if (virFileMakePath(qemu_driver->libDir) < 0) {
+ char ebuf[1024];
+ VIR_ERROR(_("Failed to create lib dir '%s': %s\n"),
+ qemu_driver->libDir, virStrerror(errno, ebuf, sizeof ebuf));
+ goto error;
+ }
+ if (virFileMakePath(qemu_driver->cacheDir) < 0) {
+ char ebuf[1024];
+ VIR_ERROR(_("Failed to create cache dir '%s': %s\n"),
+ qemu_driver->cacheDir, virStrerror(errno, ebuf, sizeof ebuf));
+ goto error;
+ }
/* Configuration paths are either ~/.libvirt/qemu/... (session) or
* /etc/libvirt/qemu/... (system).
VIR_FREE(qemu_driver->configDir);
VIR_FREE(qemu_driver->autostartDir);
VIR_FREE(qemu_driver->stateDir);
+ VIR_FREE(qemu_driver->libDir);
+ VIR_FREE(qemu_driver->cacheDir);
VIR_FREE(qemu_driver->vncTLSx509certdir);
VIR_FREE(qemu_driver->vncListen);
VIR_FREE(qemu_driver->vncPassword);
monitor_chr->data.nix.listen = 1;
if (virAsprintf(&monitor_chr->data.nix.path, "%s/%s.monitor",
- driver->stateDir, vm) < 0) {
+ driver->libDir, vm) < 0) {
virReportOOMError(conn);
return -1;
}
struct qemud_driver *driver = dom->conn->privateData;
virDomainObjPtr vm;
char cmd[256], *info = NULL;
- char tmp[] = TEMPDIR "/qemu.mem.XXXXXX";
+ char *tmp = NULL;
int fd = -1, ret = -1;
qemuDriverLock(driver);
goto cleanup;
}
+ if (virAsprintf(&tmp, driver->cacheDir, "/qemu.mem.XXXXXX") < 0) {
+ virReportOOMError(dom->conn);
+ goto cleanup;
+ }
+
/* Create a temporary filename. */
if ((fd = mkstemp (tmp)) == -1) {
virReportSystemError (dom->conn, errno,
ret = 0;
cleanup:
+ VIR_FREE(tmp);
VIR_FREE(info);
if (fd >= 0) close (fd);
unlink (tmp);