summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalev Lember <klember@redhat.com>2019-01-04 14:21:18 +0100
committerRichard Hughes <richard@hughsie.com>2019-02-06 12:16:48 +0000
commita2edcbe958fa6de2e7c325e70ed8e58f478f1719 (patch)
treed7513f38a1b4a14e749edcb31f8ff1f2b1e6ed9a
parent8ac4f05f7f84af226805b86b0e805e5714ffd3ab (diff)
downloadappstream-glib-a2edcbe958fa6de2e7c325e70ed8e58f478f1719.tar.gz
utils: trivial: Split out an internal function
-rw-r--r--libappstream-glib/as-utils.c73
1 files changed, 40 insertions, 33 deletions
diff --git a/libappstream-glib/as-utils.c b/libappstream-glib/as-utils.c
index 85742f2..e475c65 100644
--- a/libappstream-glib/as-utils.c
+++ b/libappstream-glib/as-utils.c
@@ -1387,45 +1387,17 @@ as_utils_vercmp_chunk (const gchar *str1, const gchar *str2)
return as_utils_vercmp_char (str1[i], str2[i]);
}
-/**
- * as_utils_vercmp_full:
- * @version_a: the release version, e.g. 1.2.3
- * @version_b: the release version, e.g. 1.2.3.1
- * @flags: some #AsVersionCompareFlag
- *
- * Compares version numbers for sorting.
- *
- * Returns: -1 if a < b, +1 if a > b, 0 if they are equal, and %G_MAXINT on error
- *
- * Since: 0.7.15
- */
-gint
-as_utils_vercmp_full (const gchar *version_a,
- const gchar *version_b,
- AsVersionCompareFlag flags)
+static gint
+as_utils_vercmp_internal (const gchar *version_a,
+ const gchar *version_b)
{
guint longest_split;
g_auto(GStrv) split_a = NULL;
g_auto(GStrv) split_b = NULL;
- /* sanity check */
- if (version_a == NULL || version_b == NULL)
- return G_MAXINT;
-
- /* optimisation */
- if (g_strcmp0 (version_a, version_b) == 0)
- return 0;
+ split_a = g_strsplit (version_a, ".", -1);
+ split_b = g_strsplit (version_b, ".", -1);
- /* split into sections, and try to parse */
- if (flags & AS_VERSION_COMPARE_FLAG_USE_HEURISTICS) {
- g_autofree gchar *str_a = as_utils_version_parse (version_a);
- g_autofree gchar *str_b = as_utils_version_parse (version_b);
- split_a = g_strsplit (str_a, ".", -1);
- split_b = g_strsplit (str_b, ".", -1);
- } else {
- split_a = g_strsplit (version_a, ".", -1);
- split_b = g_strsplit (version_b, ".", -1);
- }
longest_split = MAX (g_strv_length (split_a), g_strv_length (split_b));
for (guint i = 0; i < longest_split; i++) {
gchar *endptr_a = NULL;
@@ -1463,6 +1435,41 @@ as_utils_vercmp_full (const gchar *version_a,
}
/**
+ * as_utils_vercmp_full:
+ * @version_a: the release version, e.g. 1.2.3
+ * @version_b: the release version, e.g. 1.2.3.1
+ * @flags: some #AsVersionCompareFlag
+ *
+ * Compares version numbers for sorting.
+ *
+ * Returns: -1 if a < b, +1 if a > b, 0 if they are equal, and %G_MAXINT on error
+ *
+ * Since: 0.7.15
+ */
+gint
+as_utils_vercmp_full (const gchar *version_a,
+ const gchar *version_b,
+ AsVersionCompareFlag flags)
+{
+ /* sanity check */
+ if (version_a == NULL || version_b == NULL)
+ return G_MAXINT;
+
+ /* optimisation */
+ if (g_strcmp0 (version_a, version_b) == 0)
+ return 0;
+
+ if (flags & AS_VERSION_COMPARE_FLAG_USE_HEURISTICS) {
+ /* split into sections, and try to parse */
+ g_autofree gchar *str_a = as_utils_version_parse (version_a);
+ g_autofree gchar *str_b = as_utils_version_parse (version_b);
+ return as_utils_vercmp_internal (str_a, str_b);
+ } else {
+ return as_utils_vercmp_internal (version_a, version_b);
+ }
+}
+
+/**
* as_utils_vercmp:
* @version_a: the release version, e.g. 1.2.3
* @version_b: the release version, e.g. 1.2.3.1