[Libvirt-cim] [PATCH] Restructure infostore to facilitate code reuse of some functions

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Mon Oct 12 17:51:14 UTC 2009


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1255007573 25200
# Node ID 65f03165609a2291ff6ab4dcb774087055b6d568
# Parent  10f3bc589ff7754578b96b77a735526425d1e212
Restructure infostore to facilitate code reuse of some functions

These changes are to prepare for some upcoming patches.  Those patches will
create a job store, which will be used to persist job instances.

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 10f3bc589ff7 -r 65f03165609a libxkutil/infostore.c
--- a/libxkutil/infostore.c	Wed Oct 07 11:50:59 2009 -0700
+++ b/libxkutil/infostore.c	Thu Oct 08 06:12:53 2009 -0700
@@ -168,11 +168,10 @@
         return size >= 0;
 }
 
-static struct infostore_ctx *_infostore_open(virDomainPtr dom)
+static struct infostore_ctx *_generic_infostore_open(char *filename)
 {
         struct infostore_ctx *isc;
         struct stat s;
-        char *filename = NULL;
 
         isc = calloc(1, sizeof(*isc));
         if (isc == NULL) {
@@ -180,10 +179,6 @@
                 return NULL;
         }
 
-        filename = make_filename(dom);
-        if (filename == NULL)
-                goto err;
-
         isc->fd = open(filename, O_RDWR|O_CREAT, 0600);
         if (isc->fd < 0) {
                 CU_DEBUG("Unable to open `%s': %m", filename);
@@ -212,6 +207,27 @@
                 goto err;
         }
 
+        return isc;
+
+ err:
+        infostore_cleanup_ctx(isc);
+
+        return NULL;
+}
+
+static struct infostore_ctx *_infostore_open(virDomainPtr dom)
+{
+        struct infostore_ctx *isc = NULL;
+        char *filename = NULL;
+
+        filename = make_filename(dom);
+        if (filename == NULL)
+                return NULL;
+
+        isc = _generic_infostore_open(filename);
+        if (isc == NULL)
+                return NULL;
+
         if (!xmlStrEqual(isc->root->name, BAD_CAST "dominfo")) {
                 CU_DEBUG("XML does not start with <dominfo>");
                 goto err;
@@ -286,7 +302,7 @@
         return isc;
 }
 
-void infostore_close(struct infostore_ctx *ctx)
+static void _infostore_close(struct infostore_ctx *ctx)
 {
         if (ctx == NULL)
                 return;
@@ -295,6 +311,11 @@
         infostore_cleanup_ctx(ctx);
 }
 
+void infostore_close(struct infostore_ctx *ctx)
+{
+        _infostore_close(ctx);
+}
+
 void infostore_delete(const char *type, const char *name)
 {
         char *path = NULL;




More information about the Libvirt-cim mailing list