rpm/rpmsort_reverse.diff

49 lines
1.4 KiB
Diff

--- tools/rpmsort.c.orig 2023-10-11 11:38:36.639686209 +0000
+++ tools/rpmsort.c 2023-10-11 12:01:36.112837741 +0000
@@ -119,6 +119,11 @@ exit:
return vercmpflag;
}
+static int package_version_compare_reverse(const void *p, const void *q)
+{
+ return -package_version_compare(p, q);
+}
+
static void add_input(const char *filename, char ***package_names,
size_t *n_package_names)
{
@@ -169,7 +174,13 @@ static void add_input(const char *filena
*n_package_names = n_names;
}
-static struct poptOption optionsTable[] = { POPT_AUTOHELP POPT_TABLEEND };
+static int reverse = 0;
+
+static struct poptOption optionsTable[] = {
+ { "reverse", 'r', POPT_ARG_VAL, &reverse, 1,
+ N_("reverse the result of comparisons"), NULL },
+ POPT_AUTOHELP POPT_TABLEEND
+};
int main(int argc, const char *argv[])
{
@@ -181,7 +192,7 @@ int main(int argc, const char *argv[])
optCon = poptGetContext(NULL, argc, argv, optionsTable, 0);
poptSetOtherOptionHelp(optCon, "<FILES>");
- if (poptGetNextOpt(optCon) == 0) {
+ if (poptGetNextOpt(optCon) != -1) {
poptPrintUsage(optCon, stderr, 0);
exit(EXIT_FAILURE);
}
@@ -201,7 +212,8 @@ int main(int argc, const char *argv[])
}
qsort(package_names, n_package_names, sizeof(char *),
- package_version_compare);
+ reverse ? package_version_compare_reverse
+ : package_version_compare);
/* Send sorted list to stdout. */
for (int i = 0; i < n_package_names; i++) {