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);

Reply via email to