
# HG changeset patch # User Jay Gagnon <grendel@linux.vnet.ibm.com> # Date 1201795147 18000 # Node ID ec7428b062f45db8eef730c5398d061d8731ce60 # Parent ab0e3b05a10e7b5db7eb493920f01bb402d2feae [CU] Add dup_instance function to libcmpiutil It appears there are some situations where we have to duplicate an instance; this seemed like the kind of thing that would belong in libcmpiutil. Signed-off-by: Jay Gagnon <grendel@linux.vnet.ibm.com> diff -r ab0e3b05a10e -r ec7428b062f4 instance_util.c --- a/instance_util.c Wed Jan 30 11:15:32 2008 -0800 +++ b/instance_util.c Thu Jan 31 10:59:07 2008 -0500 @@ -204,6 +204,28 @@ CMPIStatus cu_copy_prop(const CMPIBroker return s; } +CMPIStatus cu_dup_instance(const CMPIBroker *broker, + CMPIInstance *src, + CMPIInstance **dest) +{ + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPIObjectPath *ref; + + ref = CMGetObjectPath(src, NULL); + if ((s.rc != CMPI_RC_OK) || CMIsNullObject(ref)) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Could not get objectpath from instance"); + goto out; + } + + *dest = NULL; + *dest = CMNewInstance(broker, ref, &s); + + out: + return s; +} + /* * Local Variables: * mode: C diff -r ab0e3b05a10e -r ec7428b062f4 libcmpiutil.h --- a/libcmpiutil.h Wed Jan 30 11:15:32 2008 -0800 +++ b/libcmpiutil.h Thu Jan 31 10:59:07 2008 -0500 @@ -164,6 +164,18 @@ CMPIrc cu_get_u16_path(const CMPIObjectP CMPIrc cu_get_u16_path(const CMPIObjectPath *reference, const char *key, uint16_t *target); + +/** + * Create a copy of an instance + * + * @param src Source instance + * @param dest Destination instance + * @returns {CMPI_RC_OK, NULL} if success, CMPI_RC ERR_FAILED and + * error message otherwise + */ +CMPIStatus cu_dup_instance(const CMPIBroker *broker, + CMPIInstance *src, + CMPIInstance **dest); /* Forward declaration */ struct inst_list;