# HG changeset patch
# User Jay Gagnon <grendel(a)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(a)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;