]> git.ipfire.org Git - pakfire.git/commitdiff
relationlists: Sort before printing them
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 11 Feb 2021 16:06:29 +0000 (16:06 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 11 Feb 2021 16:06:29 +0000 (16:06 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/relationlist.h
src/libpakfire/libpakfire.sym
src/libpakfire/package.c
src/libpakfire/relationlist.c

index a907fcf3e252ac878add1d9b365f82999c06bdf7..9ca38a0fb0b48244711077ac908eab6f7e456eee 100644 (file)
@@ -35,6 +35,8 @@ size_t pakfire_relationlist_size(PakfireRelationList relationlist);
 
 PakfireRelation pakfire_relationlist_get(PakfireRelationList relationlist, int index);
 
+void pakfire_relationlist_sort(PakfireRelationList list);
+
 #ifdef PAKFIRE_PRIVATE
 
 int pakfire_relationlist_from_queue(PakfireRelationList* list, Pakfire pakfire, Queue q);
index db013f1a7998fbbc1e210a34f5845bbd45995b0f..50e0ac0a4eea2504de48d30c9540b4e0a98b5c6b 100644 (file)
@@ -321,6 +321,7 @@ global:
        pakfire_relationlist_get;
        pakfire_relationlist_ref;
        pakfire_relationlist_size;
+       pakfire_relationlist_sort;
        pakfire_relationlist_unref;
 
        # request
index cb6fd38aa71889414c1bf99852c160eeb2cc2eef..fa836a6121d5448b4b368591573ddc7ac04db49e 100644 (file)
@@ -734,6 +734,8 @@ static void pakfire_package_dump_add_line_date(char** str, const char* key, unsi
 }
 
 static void pakfire_package_dump_add_line_relations(char** str, const char* key, PakfireRelationList deps) {
+       pakfire_relationlist_sort(deps);
+
        size_t size = pakfire_relationlist_size(deps);
        for (unsigned int i = 0; i < size; i++) {
                PakfireRelation relation = pakfire_relationlist_get(deps, i);
index 1cfd95541c9bf10c0984968301c57009b5c4b09e..af8f004ec1bfb378d4801e5fe01d4872c9831e5b 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <errno.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include <solv/pooltypes.h>
 #include <solv/queue.h>
@@ -137,3 +138,17 @@ PAKFIRE_EXPORT PakfireRelation pakfire_relationlist_get(PakfireRelationList rela
 Queue* pakfire_relationlist_get_queue(PakfireRelationList list) {
        return &list->queue;
 }
+
+static int __sort(const void* _rel1, const void* _rel2, void* _pool) {
+       const char* s1 = pool_dep2str((Pool*)_pool, *(Id*)_rel1);
+       const char* s2 = pool_dep2str((Pool*)_pool, *(Id*)_rel2);
+
+       return strcmp(s1, s2);
+}
+
+PAKFIRE_EXPORT void pakfire_relationlist_sort(PakfireRelationList list) {
+       Pool* pool = pakfire_get_solv_pool(list->pakfire);
+
+       qsort_r(list->queue.elements, list->queue.count, sizeof(*list->queue.elements),
+               __sort, pool);
+}