# HG changeset patch
# User Kaitlin Rupert <karupert(a)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(a)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;