diff options
author | Richard Hughes <richard@hughsie.com> | 2016-02-01 09:35:36 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2016-02-01 09:35:36 +0000 |
commit | b8698dc7ce5450d95adf98e14e5b22cac272ce50 (patch) | |
tree | 89be21cfdb3637e5aa7a5182c958e5307176b523 | |
parent | bfc6783eccc7e4d67d43011fdfaf88cf5972bc83 (diff) | |
download | appstream-glib-b8698dc7ce5450d95adf98e14e5b22cac272ce50.tar.gz |
Use predictable sorting when outputting <provides>
-rw-r--r-- | libappstream-glib/as-app.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c index 2f738c3..0222567 100644 --- a/libappstream-glib/as-app.c +++ b/libappstream-glib/as-app.c @@ -2987,6 +2987,23 @@ as_app_releases_sort_cb (gconstpointer a, gconstpointer b) } /** + * as_app_provides_sort_cb: + **/ +static gint +as_app_provides_sort_cb (gconstpointer a, gconstpointer b) +{ + AsProvide *prov1 = *((AsProvide **) a); + AsProvide *prov2 = *((AsProvide **) b); + + if (as_provide_get_kind (prov1) < as_provide_get_kind (prov2)) + return -1; + if (as_provide_get_kind (prov1) > as_provide_get_kind (prov2)) + return 1; + return g_strcmp0 (as_provide_get_value (prov1), + as_provide_get_value (prov2)); +} + +/** * as_app_icons_sort_cb: **/ static gint @@ -3285,6 +3302,7 @@ as_app_node_insert (AsApp *app, GNode *parent, AsNodeContext *ctx) /* <provides> */ if (priv->provides->len > 0) { AsProvide *provide; + g_ptr_array_sort (priv->provides, as_app_provides_sort_cb); node_tmp = as_node_insert (node_app, "provides", NULL, 0, NULL); for (i = 0; i < priv->provides->len; i++) { provide = g_ptr_array_index (priv->provides, i); |