]> xenbits.xensource.com Git - libvirt.git/commitdiff
Pre-create the toplevel libvirt config directory
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 14 Feb 2007 22:01:40 +0000 (22:01 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 14 Feb 2007 22:01:40 +0000 (22:01 +0000)
ChangeLog
qemud/qemud.c

index 3ae0f8b126cdc07bd3d363d8149803a9f04ac4ef..1ebbb6c0319dd63bc17fe56e97772e9705ac8f28 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Feb 14 17:01:24 EST 2007 Daniel P. Berrange <berrange@redhat.com>
+
+       * qemud/qemud.c: Ensure we create the main libvirt config
+       directory at startup
+
 Wed Feb 14 16:47:24 EST 2007 Daniel P. Berrange <berrange@redhat.com>
 
        * qemud/conf.c: Fixed generation of <features> block, and
index 5cc89b9c9383beb07e31b63d9e98c2c78a885d62..17c0e8ce032c3fed82f95b973d221a9af9090703 100644 (file)
@@ -239,6 +239,7 @@ static int qemudListen(struct qemud_server *server, int sys) {
 
 static struct qemud_server *qemudInitialize(int sys) {
     struct qemud_server *server;
+    char libvirtConf[PATH_MAX];
 
     if (!(server = calloc(1, sizeof(struct qemud_server))))
         return NULL;
@@ -249,6 +250,15 @@ static struct qemud_server *qemudInitialize(int sys) {
     server->nextvmid = 1;
 
     if (sys) {
+        if (snprintf(libvirtConf, sizeof(libvirtConf), "%s/libvirt", SYSCONF_DIR) >= (int)sizeof(libvirtConf)) {
+            goto cleanup;
+        }
+        if (mkdir(libvirtConf, 0777) < 0) {
+            if (errno != EEXIST) {
+                goto cleanup;
+            }
+        }
+
         if (snprintf(server->configDir, sizeof(server->configDir), "%s/libvirt/qemu", SYSCONF_DIR) >= (int)sizeof(server->configDir)) {
             goto cleanup;
         }
@@ -258,6 +268,7 @@ static struct qemud_server *qemudInitialize(int sys) {
     } else {
         struct passwd *pw;
         int uid;
+
         if ((uid = geteuid()) < 0) {
             goto cleanup;
         }
@@ -265,6 +276,16 @@ static struct qemud_server *qemudInitialize(int sys) {
             goto cleanup;
         }
 
+        if (snprintf(libvirtConf, sizeof(libvirtConf), "%s/.libvirt", pw->pw_dir) >= (int)sizeof(libvirtConf)) {
+            goto cleanup;
+        }
+        if (mkdir(libvirtConf, 0777) < 0) {
+            if (errno != EEXIST) {
+                goto cleanup;
+            }
+        }
+
+
         if (snprintf(server->configDir, sizeof(server->configDir), "%s/.libvirt/qemu", pw->pw_dir) >= (int)sizeof(server->configDir)) {
             goto cleanup;
         }