From: Michael Tremer Date: Sat, 3 Jun 2017 13:39:28 +0000 (+0200) Subject: libpakfire: Allow sorting package lists X-Git-Tag: 0.9.28~1285^2~1333 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b083f1c2a70dc7835cb5c403d6e9ca59e2e1495;p=pakfire.git libpakfire: Allow sorting package lists Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/packagelist.h b/src/libpakfire/include/pakfire/packagelist.h index a6d05a236..5a757815d 100644 --- a/src/libpakfire/include/pakfire/packagelist.h +++ b/src/libpakfire/include/pakfire/packagelist.h @@ -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); diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index 15f755cd4..b6baf71d0 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -144,6 +144,7 @@ global: pakfire_packagelist_has; pakfire_packagelist_push; pakfire_packagelist_push_if_not_exists; + pakfire_packagelist_sort; # pool pakfire_pool_count; diff --git a/src/libpakfire/packagelist.c b/src/libpakfire/packagelist.c index 9190eeff7..ed6b9c6a1 100644 --- a/src/libpakfire/packagelist.c +++ b/src/libpakfire/packagelist.c @@ -18,6 +18,8 @@ # # #############################################################################*/ +#include + #include #include #include @@ -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];