summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-release.c
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2015-07-22 11:06:09 +0100
committerRichard Hughes <richard@hughsie.com>2015-07-22 11:06:11 +0100
commit3f226b6a62d630d1aad43f13254292ef2564f617 (patch)
tree4687dbd28dc5d24fb59a425a63cd0441793bcee2 /libappstream-glib/as-release.c
parent15cb3c86bc1967a388702122fe7a9a610d25a189 (diff)
downloadappstream-glib-3f226b6a62d630d1aad43f13254292ef2564f617.tar.gz
Add as_release_vercmp()
We need to do the proper fallback when getting the newest release for an app.
Diffstat (limited to 'libappstream-glib/as-release.c')
-rw-r--r--libappstream-glib/as-release.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/libappstream-glib/as-release.c b/libappstream-glib/as-release.c
index b39e50b..de78f26 100644
--- a/libappstream-glib/as-release.c
+++ b/libappstream-glib/as-release.c
@@ -101,6 +101,37 @@ as_release_class_init (AsReleaseClass *klass)
}
/**
+ * as_release_vercmp:
+ * @rel1: a #AsRelease instance.
+ * @rel2: a #AsRelease instance.
+ *
+ * Compares two release.
+ *
+ * Returns: -1 if rel1 > rel2, +1 if rel1 < rel2, 0 otherwise
+ *
+ * Since: 0.4.2
+ **/
+gint
+as_release_vercmp (AsRelease *rel1, AsRelease *rel2)
+{
+ AsReleasePrivate *priv1 = GET_PRIVATE (rel1);
+ AsReleasePrivate *priv2 = GET_PRIVATE (rel2);
+ gint val;
+
+ /* prefer the version strings */
+ val = as_utils_vercmp (priv2->version, priv1->version);
+ if (val != G_MAXINT)
+ return val;
+
+ /* fall back to the timestamp */
+ if (priv1->timestamp > priv2->timestamp)
+ return -1;
+ if (priv1->timestamp < priv2->timestamp)
+ return 1;
+ return 0;
+}
+
+/**
* as_release_get_version:
* @release: a #AsRelease instance.
*