commit: 7967115a80957a456b53748820019ba7f484f4c9
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 14 15:58:51 2019 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Dec 14 15:58:51 2019 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=7967115a
qkeyword: sort keywords
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
qkeyword.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/qkeyword.c b/qkeyword.c
index b329068..4c6c759 100644
--- a/qkeyword.c
+++ b/qkeyword.c
@@ -650,6 +650,29 @@ qkeyword_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
return EXIT_SUCCESS;
}
+static int
+keyword_sort(const void *l, const void *r)
+{
+ const char **ls = (const char **)l;
+ const char **rs = (const char **)r;
+ char *ld = strchr(*ls, '-');
+ char *rd = strchr(*rs, '-');
+
+ printf("%s vs %s\n", *ls, *rs);
+ if (ld == NULL && rd != NULL)
+ return -1;
+ else if (ld != NULL && rd == NULL)
+ return 1;
+ else if (ld == NULL)
+ return strcmp(*ls, *rs);
+ else {
+ int ret = strcmp(ld + 1, rd + 1);
+ if (ret == 0)
+ ret = strcmp(*ls, *rs);
+ return ret;
+ }
+}
+
static void
qkeyword_load_arches(const char *overlay)
{
@@ -690,6 +713,9 @@ qkeyword_load_arches(const char *overlay)
free(archlist);
list_set(archs, &archlist);
+ /* sort so the output makes more 'sense' */
+ qsort(archlist, archlist_count, sizeof(char **), keyword_sort);
+
fclose(fp);
done:
free(filename);