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

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

+1 On 10/12/2009 03:51 PM, Kaitlin Rupert wrote:
# HG changeset patch # User Kaitlin Rupert<karupert@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@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;
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
-- Richard Maciel, MSc IBM Linux Technology Center rmaciel@linux.vnet.ibm.com
participants (2)
-
Kaitlin Rupert
-
Richard Maciel