Jay Gagnon wrote:
diff -r 60ecfe23d68c -r 7feaabeb36ce instance_util.c
--- a/instance_util.c Tue Feb 05 16:01:32 2008 -0500
+++ b/instance_util.c Thu Feb 07 16:36:40 2008 -0500
@@ -251,6 +251,27 @@ CMPIInstance *cu_dup_instance(const CMPI
out:
return dest;
+}
+
+char *classname_from_inst(const CMPIBroker *broker,
+ CMPIInstance *inst,
+ CMPIStatus *s)
+{
+ char *ret = NULL;
+
+ CMPIObjectPath *ref;
+ ref = CMGetObjectPath(inst, s);
+ if ((s->rc != CMPI_RC_OK) || CMIsNullObject(ref)) {
+ cu_statusf(broker, s,
+ CMPI_RC_ERR_FAILED,
+ "Could not get objectpath from instance");
+ goto out;
+ }
+
+ ret = strdup(CLASSNAME(ref));
+
+ out:
+ return ret;
}
/*
diff -r 60ecfe23d68c -r 7feaabeb36ce libcmpiutil.h
--- a/libcmpiutil.h Tue Feb 05 16:01:32 2008 -0500
+++ b/libcmpiutil.h Thu Feb 07 16:36:40 2008 -0500
@@ -413,6 +413,19 @@ CMPIStatus cu_validate_ref(const CMPIBro
CMPIStatus cu_validate_ref(const CMPIBroker *broker,
const CMPIObjectPath *ref,
const CMPIInstance *inst);
+
+/**
+ * Returns the classname from an instance without forcing user to get
+ * ObjectPath first.
+ *
+ * @param broker A pointer to the current broker
+ * @param inst Instance to examine
+ * @param s An out pointer for returning status if error occurs
+ * @returns Classname of instance (must be freed), NULL on failure
+ */
+char *classname_from_inst(const CMPIBroker *broker,
+ CMPIInstance *inst,
+ CMPIStatus *s);
#define DEFAULT_EIN(pn) \
static CMPIStatus pn##EnumInstanceNames(CMPIInstanceMI *self, \
Please let me play the PatchCO today - is this really part of the
indication patch ;) ?
--
Regards
Heidi Eckhart
Software Engineer
IBM Linux Technology Center - Open Hypervisor