From: Michael Tremer Date: Thu, 29 Apr 2021 23:06:41 +0000 (+0000) Subject: package: Sort dependencies on dump X-Git-Tag: 0.9.28~1285^2~184 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7db0d073fb5864e0f09941d82ecf1b5ae8aaf9b9;p=pakfire.git package: Sort dependencies on dump Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/package.c b/src/libpakfire/package.c index 7b9db5759..18ae59286 100644 --- a/src/libpakfire/package.c +++ b/src/libpakfire/package.c @@ -765,6 +765,13 @@ static void pakfire_package_dump_add_line_size(char** str, const char* key, unsi pakfire_package_dump_add_line(str, key, buffer); } +static int pakfire_sort_dependencies(const void* p1, const void* p2) { + const char* dep1 = *(const char**)p1; + const char* dep2 = *(const char**)p2; + + return strcmp(dep1, dep2); +} + PAKFIRE_EXPORT char* pakfire_package_dump(PakfirePackage pkg, int flags) { char* string = ""; @@ -872,13 +879,23 @@ PAKFIRE_EXPORT char* pakfire_package_dump(PakfirePackage pkg, int flags) { }; for (const struct relation* relation = relations; relation->name; relation++) { - char** list = relation->get(pkg); - if (list) { - for (char** dep = list; *dep; dep++) { + char** deps = relation->get(pkg); + if (deps) { + size_t count = 0; + + // Count elements in the list + for (char** dep = deps; *dep; dep++) + count++; + + // Sort the list + qsort(deps, count, sizeof(*deps), pakfire_sort_dependencies); + + // Write it to the console + for (char** dep = deps; *dep; dep++) { pakfire_package_dump_add_line(&string, relation->name, *dep); free(*dep); } - free(list); + free(deps); } } }