summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeter Schiffer <pschiffe@redhat.com>2014-04-17 18:24:30 +0200
committerPeter Schiffer <pschiffe@redhat.com>2014-04-18 11:50:21 +0200
commita5f05e8b0ce3c232aaa56e9c5f6e78069eac131c (patch)
tree075195f90eac18bfaede28c631e8d74a3152b74f /src
parent80ff95749c86d09260d19c5d8f52564ed78f1a2c (diff)
downloadopenlmi-providers-a5f05e8b0ce3c232aaa56e9c5f6e78069eac131c.tar.gz
openlmi-providers-a5f05e8b0ce3c232aaa56e9c5f6e78069eac131c.tar.xz
openlmi-providers-a5f05e8b0ce3c232aaa56e9c5f6e78069eac131c.zip
Software-dbus: refactor & cleanup 2
Diffstat (limited to 'src')
-rw-r--r--src/software-dbus/LMI_MemberOfSoftwareCollectionProvider.c237
-rw-r--r--src/software-dbus/LMI_SoftwareIdentityProvider.c4
-rw-r--r--src/software-dbus/sw-utils.c116
-rw-r--r--src/software-dbus/sw-utils.h31
4 files changed, 166 insertions, 222 deletions
diff --git a/src/software-dbus/LMI_MemberOfSoftwareCollectionProvider.c b/src/software-dbus/LMI_MemberOfSoftwareCollectionProvider.c
index ebd3da7..db4e06a 100644
--- a/src/software-dbus/LMI_MemberOfSoftwareCollectionProvider.c
+++ b/src/software-dbus/LMI_MemberOfSoftwareCollectionProvider.c
@@ -37,26 +37,9 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionCleanup(
CMReturn(CMPI_RC_OK);
}
-static CMPIStatus LMI_MemberOfSoftwareCollectionEnumInstanceNames(
- CMPIInstanceMI* mi,
- const CMPIContext* cc,
- const CMPIResult* cr,
- const CMPIObjectPath* cop)
+static CMPIStatus enum_instances(const CMPIResult *cr, const char *ns,
+ const short names)
{
- return KDefaultEnumerateInstanceNames(
- _cb, mi, cc, cr, cop);
-}
-
-static CMPIStatus LMI_MemberOfSoftwareCollectionEnumInstances(
- CMPIInstanceMI* mi,
- const CMPIContext* cc,
- const CMPIResult* cr,
- const CMPIObjectPath* cop,
- const char** properties)
-{
- PkTask *task = NULL;
- PkResults *results = NULL;
- GError *gerror = NULL;
GPtrArray *array = NULL;
SwPackage sw_pkg;
unsigned i;
@@ -67,21 +50,16 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionEnumInstances(
INSTANCE_ID_LEN);
LMI_SystemSoftwareCollectionRef ssc;
- LMI_SystemSoftwareCollectionRef_Init(&ssc, _cb, KNameSpace(cop));
+ LMI_SystemSoftwareCollectionRef_Init(&ssc, _cb, ns);
LMI_SystemSoftwareCollectionRef_Set_InstanceID(&ssc, instance_id);
init_sw_package(&sw_pkg);
- task = pk_task_new();
-
- results = pk_task_get_packages_sync(task, 0, NULL, NULL, NULL, &gerror);
- if (check_and_create_error_msg(results, gerror,
- "Getting list of packages failed", error_msg, ERROR_MSG_LEN)) {
+ get_pk_packages(0, &array, error_msg, ERROR_MSG_LEN);
+ if (!array) {
goto done;
}
- array = pk_results_get_package_array(results);
- g_ptr_array_sort(array, (GCompareFunc) pk_pkg_cmp);
for (i = 0; i < array->len; i++) {
if (create_sw_package_from_pk_pkg(g_ptr_array_index(array, i),
&sw_pkg) != 0) {
@@ -96,28 +74,25 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionEnumInstances(
free_sw_package(&sw_pkg);
LMI_SoftwareIdentityRef si;
- LMI_SoftwareIdentityRef_Init(&si, _cb, KNameSpace(cop));
+ LMI_SoftwareIdentityRef_Init(&si, _cb, ns);
LMI_SoftwareIdentityRef_Set_InstanceID(&si, instance_id);
LMI_MemberOfSoftwareCollection w;
- LMI_MemberOfSoftwareCollection_Init(&w, _cb, KNameSpace(cop));
+ LMI_MemberOfSoftwareCollection_Init(&w, _cb, ns);
LMI_MemberOfSoftwareCollection_Set_Collection(&w, &ssc);
LMI_MemberOfSoftwareCollection_Set_Member(&w, &si);
- KReturnInstance(cr, w);
+
+ if (names) {
+ KReturnObjectPath(cr, w);
+ } else {
+ KReturnInstance(cr, w);
+ }
}
done:
- g_clear_error(&gerror);
-
if (array) {
g_ptr_array_unref(array);
}
- if (results) {
- g_object_unref(results);
- }
- if (task) {
- g_object_unref(task);
- }
if (*error_msg) {
KReturn2(_cb, ERR_FAILED, "%s", error_msg);
@@ -126,6 +101,25 @@ done:
CMReturn(CMPI_RC_OK);
}
+static CMPIStatus LMI_MemberOfSoftwareCollectionEnumInstanceNames(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop)
+{
+ return enum_instances(cr, KNameSpace(cop), 1);
+}
+
+static CMPIStatus LMI_MemberOfSoftwareCollectionEnumInstances(
+ CMPIInstanceMI* mi,
+ const CMPIContext* cc,
+ const CMPIResult* cr,
+ const CMPIObjectPath* cop,
+ const char** properties)
+{
+ return enum_instances(cr, KNameSpace(cop), 0);
+}
+
static CMPIStatus LMI_MemberOfSoftwareCollectionGetInstance(
CMPIInstanceMI* mi,
const CMPIContext* cc,
@@ -157,11 +151,11 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionGetInstance(
}
get_pk_pkg_from_sw_pkg(&sw_pkg, &pk_pkg);
+ free_sw_package(&sw_pkg);
if (!pk_pkg) {
CMReturn(CMPI_RC_ERR_NOT_FOUND);
}
g_object_unref(pk_pkg);
- free_sw_package(&sw_pkg);
KReturnInstance(cr, w);
CMReturn(CMPI_RC_OK);
@@ -217,7 +211,6 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionAssociationCleanup(
}
static CMPIStatus associators(
- CMPIAssociationMI* mi,
const CMPIContext* cc,
const CMPIResult* cr,
const CMPIObjectPath* cop,
@@ -229,16 +222,7 @@ static CMPIStatus associators(
const short names)
{
CMPIStatus st;
- CMPIInstance *ci;
- CMPIObjectPath *o;
- PkTask *task = NULL;
- PkResults *results = NULL;
- GError *gerror = NULL;
- GPtrArray *array = NULL;
- SwPackage sw_pkg;
- unsigned i;
- char error_msg[ERROR_MSG_LEN] = "", elem_name[ELEM_NAME_LEN] = "",
- instance_id[INSTANCE_ID_LEN] = "";
+ char error_msg[ERROR_MSG_LEN] = "";
if (!cm_class_is_a(_cb, KNameSpace(cop), assocClass,
ORGID "_" MEM_SW_COLL_CLASS_NAME)) {
@@ -263,39 +247,12 @@ static CMPIStatus associators(
goto done;
}
- init_sw_package(&sw_pkg);
-
- task = pk_task_new();
-
- results = pk_task_get_packages_sync(task, 0, NULL, NULL, NULL, &gerror);
- if (check_and_create_error_msg(results, gerror,
- "Getting list of packages failed", error_msg, ERROR_MSG_LEN)) {
- goto done;
- }
-
- array = pk_results_get_package_array(results);
- g_ptr_array_sort(array, (GCompareFunc) pk_pkg_cmp);
- for (i = 0; i < array->len; i++) {
- if (create_sw_package_from_pk_pkg(g_ptr_array_index(array, i),
- &sw_pkg) != 0) {
- continue;
- }
-
- sw_pkg_get_element_name(&sw_pkg, elem_name, ELEM_NAME_LEN);
-
- create_instance_id(SW_IDENTITY_CLASS_NAME, elem_name, instance_id,
- INSTANCE_ID_LEN);
-
- free_sw_package(&sw_pkg);
-
- LMI_SoftwareIdentityRef si;
- LMI_SoftwareIdentityRef_Init(&si, _cb, KNameSpace(cop));
- LMI_SoftwareIdentityRef_Set_InstanceID(&si, instance_id);
- o = LMI_SoftwareIdentityRef_ToObjectPath(&si, &st);
- CMReturnObjectPath(cr, o);
- }
+ enum_sw_identity_instance_names(0, _cb, KNameSpace(cop), cr, error_msg,
+ ERROR_MSG_LEN);
} else if (CMClassPathIsA(_cb, cop, ORGID "_" SW_IDENTITY_CLASS_NAME, &st)) {
/* got SoftwareIdentity - Member */
+ char instance_id[INSTANCE_ID_LEN] = "";
+
if (cm_class_is_a(_cb, KNameSpace(cop), resultClass,
ORGID "_" SYSTEM_SW_COLLECTION_CLASS_NAME) != 0) {
goto done;
@@ -308,33 +265,22 @@ static CMPIStatus associators(
}
create_instance_id(SYSTEM_SW_COLLECTION_CLASS_NAME, NULL, instance_id,
- INSTANCE_ID_LEN);
+ INSTANCE_ID_LEN);
LMI_SystemSoftwareCollectionRef ssc;
LMI_SystemSoftwareCollectionRef_Init(&ssc, _cb, KNameSpace(cop));
LMI_SystemSoftwareCollectionRef_Set_InstanceID(&ssc, instance_id);
- o = LMI_SystemSoftwareCollectionRef_ToObjectPath(&ssc, &st);
+
if (names) {
- CMReturnObjectPath(cr, o);
+ KReturnObjectPath(cr, ssc);
} else {
- ci = _cb->bft->getInstance(_cb, cc, o, properties, &st);
+ CMPIObjectPath *o = LMI_SystemSoftwareCollectionRef_ToObjectPath(&ssc, &st);
+ CMPIInstance *ci = _cb->bft->getInstance(_cb, cc, o, properties, &st);
CMReturnInstance(cr, ci);
}
}
done:
- g_clear_error(&gerror);
-
- if (array) {
- g_ptr_array_unref(array);
- }
- if (results) {
- g_object_unref(results);
- }
- if (task) {
- g_object_unref(task);
- }
-
if (*error_msg) {
KReturn2(_cb, ERR_FAILED, "%s", error_msg);
}
@@ -353,7 +299,7 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionAssociators(
const char* resultRole,
const char** properties)
{
- return associators(mi, cc, cr, cop, assocClass, resultClass, role,
+ return associators(cc, cr, cop, assocClass, resultClass, role,
resultRole, properties, 0);
}
@@ -367,95 +313,46 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionAssociatorNames(
const char* role,
const char* resultRole)
{
- return associators(mi, cc, cr, cop, assocClass, resultClass, role,
+ return associators(cc, cr, cop, assocClass, resultClass, role,
resultRole, NULL, 1);
}
static CMPIStatus references(
- CMPIAssociationMI* mi,
- const CMPIContext* cc,
const CMPIResult* cr,
const CMPIObjectPath* cop,
const char* assocClass,
const char* role,
- const char** properties,
const short names)
{
CMPIStatus st;
- CMPIObjectPath *o;
- PkTask *task = NULL;
- PkResults *results = NULL;
- GError *gerror = NULL;
- GPtrArray *array = NULL;
- SwPackage sw_pkg;
- unsigned i;
- char error_msg[ERROR_MSG_LEN] = "", elem_name[ELEM_NAME_LEN] = "",
- instance_id[INSTANCE_ID_LEN] = "";
if (!cm_class_is_a(_cb, KNameSpace(cop), assocClass,
ORGID "_" MEM_SW_COLL_CLASS_NAME)) {
goto done;
}
- create_instance_id(SYSTEM_SW_COLLECTION_CLASS_NAME, NULL, instance_id,
- INSTANCE_ID_LEN);
-
- LMI_SystemSoftwareCollectionRef ssc;
- LMI_SystemSoftwareCollectionRef_Init(&ssc, _cb, KNameSpace(cop));
- LMI_SystemSoftwareCollectionRef_Set_InstanceID(&ssc, instance_id);
-
if (CMClassPathIsA(_cb, cop, ORGID "_" SYSTEM_SW_COLLECTION_CLASS_NAME, &st)) {
/* got SystemSoftwareCollection - Collection */
if (role && strcmp(role, COLLECTION_ATTR) != 0) {
goto done;
}
- init_sw_package(&sw_pkg);
-
- task = pk_task_new();
-
- results = pk_task_get_packages_sync(task, 0, NULL, NULL, NULL, &gerror);
- if (check_and_create_error_msg(results, gerror,
- "Getting list of packages failed", error_msg, ERROR_MSG_LEN)) {
- goto done;
- }
-
- array = pk_results_get_package_array(results);
- g_ptr_array_sort(array, (GCompareFunc) pk_pkg_cmp);
- for (i = 0; i < array->len; i++) {
- if (create_sw_package_from_pk_pkg(g_ptr_array_index(array, i),
- &sw_pkg) != 0) {
- continue;
- }
-
- sw_pkg_get_element_name(&sw_pkg, elem_name, ELEM_NAME_LEN);
-
- create_instance_id(SW_IDENTITY_CLASS_NAME, elem_name, instance_id,
- INSTANCE_ID_LEN);
-
- free_sw_package(&sw_pkg);
-
- LMI_SoftwareIdentityRef si;
- LMI_SoftwareIdentityRef_Init(&si, _cb, KNameSpace(cop));
- LMI_SoftwareIdentityRef_Set_InstanceID(&si, instance_id);
-
- LMI_MemberOfSoftwareCollection w;
- LMI_MemberOfSoftwareCollection_Init(&w, _cb, KNameSpace(cop));
- LMI_MemberOfSoftwareCollection_Set_Collection(&w, &ssc);
- LMI_MemberOfSoftwareCollection_Set_Member(&w, &si);
- if (names) {
- o = LMI_MemberOfSoftwareCollection_ToObjectPath(&w, &st);
- CMReturnObjectPath(cr, o);
- } else {
- KReturnInstance(cr, w);
- }
- }
+ return enum_instances(cr, KNameSpace(cop), names);
} else if (CMClassPathIsA(_cb, cop, ORGID "_" SW_IDENTITY_CLASS_NAME, &st)) {
/* got SoftwareIdentity - Member */
+ char instance_id[INSTANCE_ID_LEN] = "";
+
if (role && strcmp(role, MEMBER_ATTR) != 0) {
goto done;
}
+ create_instance_id(SYSTEM_SW_COLLECTION_CLASS_NAME, NULL, instance_id,
+ INSTANCE_ID_LEN);
+
+ LMI_SystemSoftwareCollectionRef ssc;
+ LMI_SystemSoftwareCollectionRef_Init(&ssc, _cb, KNameSpace(cop));
+ LMI_SystemSoftwareCollectionRef_Set_InstanceID(&ssc, instance_id);
+
LMI_SoftwareIdentityRef si;
LMI_SoftwareIdentityRef_InitFromObjectPath(&si, _cb, cop);
@@ -463,31 +360,15 @@ static CMPIStatus references(
LMI_MemberOfSoftwareCollection_Init(&w, _cb, KNameSpace(cop));
LMI_MemberOfSoftwareCollection_Set_Collection(&w, &ssc);
LMI_MemberOfSoftwareCollection_Set_Member(&w, &si);
+
if (names) {
- o = LMI_MemberOfSoftwareCollection_ToObjectPath(&w, &st);
- CMReturnObjectPath(cr, o);
+ KReturnObjectPath(cr, w);
} else {
KReturnInstance(cr, w);
}
}
done:
- g_clear_error(&gerror);
-
- if (array) {
- g_ptr_array_unref(array);
- }
- if (results) {
- g_object_unref(results);
- }
- if (task) {
- g_object_unref(task);
- }
-
- if (*error_msg) {
- KReturn2(_cb, ERR_FAILED, "%s", error_msg);
- }
-
CMReturn(CMPI_RC_OK);
}
@@ -500,7 +381,7 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionReferences(
const char* role,
const char** properties)
{
- return references(mi, cc, cr, cop, assocClass, role, properties, 0);
+ return references(cr, cop, assocClass, role, 0);
}
static CMPIStatus LMI_MemberOfSoftwareCollectionReferenceNames(
@@ -511,7 +392,7 @@ static CMPIStatus LMI_MemberOfSoftwareCollectionReferenceNames(
const char* assocClass,
const char* role)
{
- return references(mi, cc, cr, cop, assocClass, role, NULL, 1);
+ return references(cr, cop, assocClass, role, 1);
}
CMInstanceMIStub(
diff --git a/src/software-dbus/LMI_SoftwareIdentityProvider.c b/src/software-dbus/LMI_SoftwareIdentityProvider.c
index 696c65e..6d2f065 100644
--- a/src/software-dbus/LMI_SoftwareIdentityProvider.c
+++ b/src/software-dbus/LMI_SoftwareIdentityProvider.c
@@ -45,8 +45,8 @@ static CMPIStatus LMI_SoftwareIdentityEnumInstanceNames(
{
char error_msg[ERROR_MSG_LEN] = "";
- enum_sw_identity_instances(0, _cb, KNameSpace(cop), cr,
- error_msg, ERROR_MSG_LEN, 1);
+ enum_sw_identity_instance_names(0, _cb, KNameSpace(cop), cr, error_msg,
+ ERROR_MSG_LEN);
if (*error_msg) {
KReturn2(_cb, ERR_FAILED, "%s", error_msg);
diff --git a/src/software-dbus/sw-utils.c b/src/software-dbus/sw-utils.c
index 410a0fe..7101e00 100644
--- a/src/software-dbus/sw-utils.c
+++ b/src/software-dbus/sw-utils.c
@@ -224,7 +224,6 @@ void get_pk_pkg_from_sw_pkg(const SwPackage *sw_pkg, PkPackage **pk_pkg)
values = g_new0(gchar*, 2);
values[0] = g_strdup(sw_pkg->name);
- values[1] = NULL;
results = pk_task_search_names_sync(task, 0, values, NULL, NULL, NULL, &gerror);
if (check_and_create_error_msg(results, gerror, "Resolving package failed",
@@ -276,7 +275,6 @@ void get_pk_det_from_pk_pkg(PkPackage *pk_pkg, PkDetails **pk_det)
values = g_new0(gchar*, 2);
values[0] = g_strdup(pk_package_get_id(pk_pkg));
- values[1] = NULL;
results = pk_task_get_details_sync(task, values, NULL, NULL, NULL, &gerror);
if (check_and_create_error_msg(results, gerror,
@@ -363,18 +361,13 @@ void create_instance_from_pkgkit_data(PkPackage *pk_pkg, PkDetails *pk_det,
* Functions related to multiple PkPackages
******************************************************************************/
-void enum_sw_identity_instances(PkBitfield filters, const CMPIBroker *cb,
- const char *ns, const CMPIResult* cr, char *error_msg,
- const unsigned error_msg_len, const short names)
+void get_pk_packages(PkBitfield filters, GPtrArray **garray, char *error_msg,
+ const unsigned error_msg_len)
{
PkTask *task = NULL;
PkResults *results = NULL;
GError *gerror = NULL;
GPtrArray *array = NULL;
- SwPackage sw_pkg;
- unsigned i;
-
- init_sw_package(&sw_pkg);
task = pk_task_new();
@@ -386,44 +379,94 @@ void enum_sw_identity_instances(PkBitfield filters, const CMPIBroker *cb,
array = pk_results_get_package_array(results);
g_ptr_array_sort(array, (GCompareFunc) pk_pkg_cmp);
+ *garray = g_ptr_array_ref(array);
- if (names) {
- char elem_name[ELEM_NAME_LEN] = "", instance_id[INSTANCE_ID_LEN] = "";
+done:
+ g_clear_error(&gerror);
- for (i = 0; i < array->len; i++) {
- if (create_sw_package_from_pk_pkg(g_ptr_array_index(array, i),
- &sw_pkg) != 0) {
- continue;
- }
+ if (array) {
+ g_ptr_array_unref(array);
+ }
+ if (results) {
+ g_object_unref(results);
+ }
+ if (task) {
+ g_object_unref(task);
+ }
- sw_pkg_get_element_name(&sw_pkg, elem_name, ELEM_NAME_LEN);
+ return;
+}
- create_instance_id(SW_IDENTITY_CLASS_NAME, elem_name, instance_id,
- INSTANCE_ID_LEN);
+void enum_sw_identity_instance_names(PkBitfield filters, const CMPIBroker *cb,
+ const char *ns, const CMPIResult* cr, char *error_msg,
+ const unsigned error_msg_len)
+{
+ GPtrArray *array = NULL;
+ SwPackage sw_pkg;
+ unsigned i;
+ char elem_name[ELEM_NAME_LEN] = "", instance_id[INSTANCE_ID_LEN] = "";
- free_sw_package(&sw_pkg);
+ init_sw_package(&sw_pkg);
+
+ get_pk_packages(filters, &array, error_msg, error_msg_len);
+ if (!array) {
+ goto done;
+ }
- LMI_SoftwareIdentityRef w;
- LMI_SoftwareIdentityRef_Init(&w, cb, ns);
- LMI_SoftwareIdentityRef_Set_InstanceID(&w, instance_id);
- KReturnObjectPath(cr, w);
+ for (i = 0; i < array->len; i++) {
+ if (create_sw_package_from_pk_pkg(g_ptr_array_index(array, i),
+ &sw_pkg) != 0) {
+ continue;
}
- goto done;
+ sw_pkg_get_element_name(&sw_pkg, elem_name, ELEM_NAME_LEN);
+
+ create_instance_id(SW_IDENTITY_CLASS_NAME, elem_name, instance_id,
+ INSTANCE_ID_LEN);
+
+ free_sw_package(&sw_pkg);
+
+ LMI_SoftwareIdentityRef w;
+ LMI_SoftwareIdentityRef_Init(&w, cb, ns);
+ LMI_SoftwareIdentityRef_Set_InstanceID(&w, instance_id);
+ KReturnObjectPath(cr, w);
}
+done:
+ if (array) {
+ g_ptr_array_unref(array);
+ }
+
+ return;
+}
+
+void enum_sw_identity_instances(PkBitfield filters, const CMPIBroker *cb,
+ const char *ns, const CMPIResult* cr, char *error_msg,
+ const unsigned error_msg_len)
+{
LMI_SoftwareIdentity w;
+ PkTask *task = NULL;
PkPackage *pk_pkg = NULL;
PkDetails *pk_det = NULL;
- PkResults *results2 = NULL;
- GPtrArray *array2 = NULL;
+ PkResults *results = NULL;
+ GPtrArray *array = NULL, *array2 = NULL;
+ GError *gerror = NULL;
gchar **values = NULL;
+ SwPackage sw_pkg;
int cmpres;
- unsigned j, a2i;
+ unsigned i, j, a2i;
+
+ init_sw_package(&sw_pkg);
+
+ get_pk_packages(filters, &array, error_msg, error_msg_len);
+ if (!array) {
+ goto done;
+ }
+
+ task = pk_task_new();
for (i = 0; i < array->len / PK_DETAILS_LIMIT + 1; i++) {
values = g_new0(gchar*, PK_DETAILS_LIMIT + 1);
- values[PK_DETAILS_LIMIT] = NULL;
for (j = i * PK_DETAILS_LIMIT;
j < (i + 1) * PK_DETAILS_LIMIT && j < array->len; j++) {
@@ -431,14 +474,14 @@ void enum_sw_identity_instances(PkBitfield filters, const CMPIBroker *cb,
g_ptr_array_index(array, j)));
}
- results2 = pk_task_get_details_sync(task, values, NULL, NULL, NULL, &gerror);
- if (check_and_create_error_msg(results2, gerror,
+ results = pk_task_get_details_sync(task, values, NULL, NULL, NULL, &gerror);
+ if (check_and_create_error_msg(results, gerror,
"Getting package details failed", error_msg, error_msg_len)) {
warn(error_msg);
/* This is non-fatal problem. */
error_msg[0] = '\0';
} else {
- array2 = pk_results_get_details_array(results2);
+ array2 = pk_results_get_details_array(results);
g_ptr_array_sort(array2, (GCompareFunc) pk_det_cmp);
}
@@ -479,9 +522,9 @@ void enum_sw_identity_instances(PkBitfield filters, const CMPIBroker *cb,
free_sw_package(&sw_pkg);
}
- if (results2) {
- g_object_unref(results2);
- results2 = NULL;
+ if (results) {
+ g_object_unref(results);
+ results = NULL;
}
if (array2) {
g_ptr_array_unref(array2);
@@ -495,9 +538,6 @@ done:
if (array) {
g_ptr_array_unref(array);
}
- if (results) {
- g_object_unref(results);
- }
if (task) {
g_object_unref(task);
}
diff --git a/src/software-dbus/sw-utils.h b/src/software-dbus/sw-utils.h
index b8b7598..b43a068 100644
--- a/src/software-dbus/sw-utils.h
+++ b/src/software-dbus/sw-utils.h
@@ -140,20 +140,43 @@ void create_instance_from_pkgkit_data(PkPackage *pk_pkg, PkDetails *pk_det,
* Functions related to multiple PkPackages
******************************************************************************/
/*
+ * Get all packages from PackageKit filtered according to filters. Output array
+ * is sorted.
+ * @param filters
+ * @param garray; needs to be passed to g_ptr_array_unref() when not needed
+ * @param error_msg error message
+ * @param error_msg_len error message length
+ */
+void get_pk_packages(PkBitfield filters, GPtrArray **garray, char *error_msg,
+ const unsigned error_msg_len);
+
+/*
+ * Enumerate SoftwareIdentityRef instances. This function calls KReturnInstance(),
+ * so instances are returned directly from within the function.
+ * @param filters PackageKit filters
+ * @param cb CMPI Broker
+ * @param ns Namespace
+ * @param cr CMPI Result
+ * @param error_msg error message, if filled, problem occurred
+ * @param error_msg_len error message length
+ */
+void enum_sw_identity_instance_names(PkBitfield filters, const CMPIBroker *cb,
+ const char *ns, const CMPIResult* cr, char *error_msg,
+ const unsigned error_msg_len);
+
+/*
* Enumerate SoftwareIdentity instances. This function calls KReturnInstance(),
* so instances are returned directly from within the function.
* @param filters PackageKit filters
* @param cb CMPI Broker
* @param ns Namespace
* @param cr CMPI Result
- * @param error_msg error message, if filled, problem occured
+ * @param error_msg error message, if filled, problem occurred
* @param error_msg_len error message length
- * @param names if true, this function will enumerate only SoftwareIdentityRef
- * instances
*/
void enum_sw_identity_instances(PkBitfield filters, const CMPIBroker *cb,
const char *ns, const CMPIResult* cr, char *error_msg,
- const unsigned error_msg_len, const short names);
+ const unsigned error_msg_len);
/*******************************************************************************
* Functions related to PackageKit