summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-release.c
diff options
context:
space:
mode:
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.
*