diff options
author | Richard Hughes <richard@hughsie.com> | 2015-07-22 11:06:09 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-07-22 11:06:11 +0100 |
commit | 3f226b6a62d630d1aad43f13254292ef2564f617 (patch) | |
tree | 4687dbd28dc5d24fb59a425a63cd0441793bcee2 /libappstream-glib/as-release.c | |
parent | 15cb3c86bc1967a388702122fe7a9a610d25a189 (diff) | |
download | appstream-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.c | 31 |
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. * |