]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Allow sorting package lists
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 Jun 2017 13:39:28 +0000 (15:39 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 Jun 2017 13:39:28 +0000 (15:39 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/packagelist.h
src/libpakfire/libpakfire.sym
src/libpakfire/packagelist.c

index a6d05a2363df7e554af8c35249ff52d4ff837020..5a757815d52622477d498413b3d707c9a5026800 100644 (file)
@@ -29,6 +29,7 @@ PakfirePackageList pakfire_packagelist_create(void);
 void pakfire_packagelist_free(PakfirePackageList list);
 
 int pakfire_packagelist_count(PakfirePackageList list);
+void pakfire_packagelist_sort(PakfirePackageList list);
 int pakfire_packagelist_has(PakfirePackageList list, PakfirePackage pkg);
 PakfirePackage pakfire_packagelist_get(PakfirePackageList list, int index);
 
index 15f755cd4f814ba4984691d628606d2d1a8bb8bf..b6baf71d0417ac10f145fb3a52a10861197d4ed0 100644 (file)
@@ -144,6 +144,7 @@ global:
        pakfire_packagelist_has;
        pakfire_packagelist_push;
        pakfire_packagelist_push_if_not_exists;
+       pakfire_packagelist_sort;
 
        # pool
        pakfire_pool_count;
index 9190eeff7bb2260e7e7e5aea9c2d420d959c869e..ed6b9c6a16c1e403ea9ab1e0d0f2a96c773a48ca 100644 (file)
@@ -18,6 +18,8 @@
 #                                                                             #
 #############################################################################*/
 
+#include <stdlib.h>
+
 #include <solv/pool.h>
 #include <solv/pooltypes.h>
 #include <solv/solver.h>
@@ -50,6 +52,14 @@ int pakfire_packagelist_count(PakfirePackageList list) {
        return list->count;
 }
 
+int _packagelist_cmp(const void* pkg1, const void* pkg2) {
+       return pakfire_package_cmp(*(PakfirePackage*)pkg1, *(PakfirePackage*)pkg2);
+}
+
+void pakfire_packagelist_sort(PakfirePackageList list) {
+       qsort(list->elements, list->count, sizeof(*list->elements), _packagelist_cmp);
+}
+
 PakfirePackage pakfire_packagelist_get(PakfirePackageList list, int index) {
        if (index < list->count)
                return list->elements[index];