#include <pakfire/config.h>
#include <pakfire/downloader.h>
#include <pakfire/package.h>
+#include <pakfire/packagelist.h>
#define PAKFIRE_REPO_COMMANDLINE "@commandline"
#define PAKFIRE_REPO_DUMMY "@dummy"
struct pakfire_mirrorlist* pakfire_repo_get_mirrorlist(struct pakfire_repo* repo);
+int pakfire_repo_create_packagelist(struct pakfire_repo* repo,
+ struct pakfire_packagelist** list);
+
#endif
#endif /* PAKFIRE_REPO_H */
return r;
}
+
+/*
+ This function appends the IDs of all solvables to the given Queue
+*/
+static int pakfire_repo_to_queue(struct pakfire_repo* repo, Queue* q) {
+ Repo* _repo = repo->repo;
+ Solvable* s = NULL;
+ Id id;
+ int i;
+
+ // Walk through all Solvables and append them to the queue
+ FOR_REPO_SOLVABLES(_repo, i, s) {
+ // Convert the solvable into an ID
+ id = pool_solvable2id(_repo->pool, s);
+
+ queue_push(q, id);
+ }
+
+ return 0;
+}
+
+int pakfire_repo_create_packagelist(struct pakfire_repo* repo,
+ struct pakfire_packagelist** list) {
+ int r;
+
+ Queue q;
+ queue_init(&q);
+
+ // Create a queue with all Solvables
+ r = pakfire_repo_to_queue(repo, &q);
+ if (r)
+ goto ERROR;
+
+ // Create the packagelist
+ r = pakfire_packagelist_create_from_queue(list, repo->pakfire, &q);
+ if (r)
+ goto ERROR;
+
+ // Sort the list
+ pakfire_packagelist_sort(*list);
+
+ERROR:
+ queue_free(&q);
+
+ return r;
+}