#include <solv/queue.h>
-int pakfire_packagelist_create_from_queue(struct pakfire_packagelist** list, struct pakfire* pakfire, Queue* q);
+int pakfire_packagelist_create_from_queue(struct pakfire_packagelist** list,
+ struct pakfire* pakfire, Queue* q) __attribute__ ((deprecated));
typedef int (*pakfire_packagelist_walk_callback)
(struct pakfire* pakfire, struct pakfire_package* pkg, void* p);
int pakfire_packagelist_walk(struct pakfire_packagelist* list,
pakfire_packagelist_walk_callback callback, void* p);
+int pakfire_packagelist_import_solvables(struct pakfire_packagelist* list, Queue* q);
+
#endif
#endif /* PAKFIRE_PACKAGELIST_H */
}
int pakfire_packagelist_create_from_queue(struct pakfire_packagelist** list, struct pakfire* pakfire, Queue* q) {
- struct pakfire_package* pkg = NULL;
+ int r;
// Create a new package list
- int r = pakfire_packagelist_create(list, pakfire);
+ r = pakfire_packagelist_create(list, pakfire);
if (r)
- return r;
+ goto ERROR;
- for (int i = 0; i < q->count; i++) {
- r = pakfire_package_create_from_solvable(&pkg, pakfire, q->elements[i]);
- if (r)
- goto ERROR;
-
- pakfire_packagelist_push(*list, pkg);
- pakfire_package_unref(pkg);
- }
+ r = pakfire_packagelist_import_solvables(*list, q);
+ if (r)
+ goto ERROR;
return 0;
ERROR:
- pakfire_packagelist_free(*list);
- *list = NULL;
+ if (*list) {
+ pakfire_packagelist_free(*list);
+ *list = NULL;
+ }
- return 1;
+ return r;
}
PAKFIRE_EXPORT struct pakfire_packagelist* pakfire_packagelist_ref(struct pakfire_packagelist* list) {
return r;
}
+
+int pakfire_packagelist_import_solvables(struct pakfire_packagelist* list, Queue* q) {
+ struct pakfire_package* pkg = NULL;
+ int r;
+
+ // Walk through all elements on the queue
+ for (int i = 0; i < q->count; i++) {
+ r = pakfire_package_create_from_solvable(&pkg, list->pakfire, q->elements[i]);
+ if (r)
+ return r;
+
+ pakfire_packagelist_push(list, pkg);
+ pakfire_package_unref(pkg);
+ }
+
+ return 0;
+}