[evolution-data-server] Add e_util_strv_equal().



commit 730182476511ecc6d8d4f445eb08e42e3ba3dea4
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Oct 21 14:19:49 2013 -0400

    Add e_util_strv_equal().
    
    Compares two NULL-terminated string arrays for equality, handling NULL
    gracefully for either argument.

 .../libedataserver/libedataserver-sections.txt     |    1 +
 libedataserver/e-data-server-util.c                |   41 ++++++++++++++++++++
 libedataserver/e-data-server-util.h                |    2 +
 libedataserver/e-source-mail-composition.c         |   21 +---------
 4 files changed, 46 insertions(+), 19 deletions(-)
---
diff --git a/docs/reference/libedataserver/libedataserver-sections.txt 
b/docs/reference/libedataserver/libedataserver-sections.txt
index 19251a7..c3c2a0d 100644
--- a/docs/reference/libedataserver/libedataserver-sections.txt
+++ b/docs/reference/libedataserver/libedataserver-sections.txt
@@ -1224,6 +1224,7 @@ tm
 e_get_user_cache_dir
 e_get_user_config_dir
 e_get_user_data_dir
+e_util_strv_equal
 e_util_strdup_strip
 e_util_strstrcase
 e_util_unicode_get_utf8
diff --git a/libedataserver/e-data-server-util.c b/libedataserver/e-data-server-util.c
index 61b1404..4c90452 100644
--- a/libedataserver/e-data-server-util.c
+++ b/libedataserver/e-data-server-util.c
@@ -119,6 +119,47 @@ e_get_user_data_dir (void)
 }
 
 /**
+ * e_util_strv_equal:
+ * @v1: (allow-none): a %NULL-terminated string array, or %NULL
+ * @v2: (allow-none): another %NULL-terminated string array, or %NULL
+ *
+ * Compares @v1 and @v2 for equality, handling %NULL gracefully.
+ *
+ * The arguments types are generic for compatibility with #GEqualFunc.
+ *
+ * Returns: whether @v1 and @v2 are identical
+ *
+ * Since: 3.12
+ **/
+gboolean
+e_util_strv_equal (gconstpointer v1,
+                   gconstpointer v2)
+{
+       gchar **strv1 = (gchar **) v1;
+       gchar **strv2 = (gchar **) v2;
+       guint length1, length2, ii;
+
+       if (strv1 == strv2)
+               return TRUE;
+
+       if (strv1 == NULL || strv2 == NULL)
+               return FALSE;
+
+       length1 = g_strv_length (strv1);
+       length2 = g_strv_length (strv2);
+
+       if (length1 != length2)
+               return FALSE;
+
+       for (ii = 0; ii < length1; ii++) {
+               if (!g_str_equal (strv1[ii], strv2[ii]))
+                       return FALSE;
+       }
+
+       return TRUE;
+}
+
+/**
  * e_util_strdup_strip:
  * @string: (allow-none): a string value, or %NULL
  *
diff --git a/libedataserver/e-data-server-util.h b/libedataserver/e-data-server-util.h
index e611728..154ca57 100644
--- a/libedataserver/e-data-server-util.h
+++ b/libedataserver/e-data-server-util.h
@@ -40,6 +40,8 @@ const gchar * e_get_user_cache_dir            (void);
 const gchar *  e_get_user_config_dir           (void);
 const gchar *  e_get_user_data_dir             (void);
 
+gboolean       e_util_strv_equal               (gconstpointer v1,
+                                                gconstpointer v2);
 gchar *                e_util_strdup_strip             (const gchar *string);
 gchar *                e_util_strstrcase               (const gchar *haystack,
                                                 const gchar *needle);
diff --git a/libedataserver/e-source-mail-composition.c b/libedataserver/e-source-mail-composition.c
index 1244e39..2245a0a 100644
--- a/libedataserver/e-source-mail-composition.c
+++ b/libedataserver/e-source-mail-composition.c
@@ -317,23 +317,6 @@ e_source_mail_composition_dup_bcc (ESourceMailComposition *extension)
        return duplicate;
 }
 
-static gboolean
-strv_equal (const gchar * const *strv1,
-            const gchar * const *strv2)
-{
-       gint ii;
-
-       if (!strv1 || !strv2)
-               return strv1 == strv2;
-
-       for (ii = 0; strv1[ii] && strv2[ii]; ii++) {
-               if (g_strcmp0 (strv1[ii], strv2[ii]) != 0)
-                       return FALSE;
-       }
-
-       return !strv1[ii] && strv1[ii] == strv2[ii];
-}
-
 /**
  * e_source_mail_composition_set_bcc:
  * @extension: an #ESource
@@ -353,7 +336,7 @@ e_source_mail_composition_set_bcc (ESourceMailComposition *extension,
 
        g_mutex_lock (&extension->priv->property_lock);
 
-       if (strv_equal ((const gchar * const *) extension->priv->bcc, bcc)) {
+       if (e_util_strv_equal (bcc, extension->priv->bcc)) {
                g_mutex_unlock (&extension->priv->property_lock);
                return;
        }
@@ -440,7 +423,7 @@ e_source_mail_composition_set_cc (ESourceMailComposition *extension,
 
        g_mutex_lock (&extension->priv->property_lock);
 
-       if (strv_equal ((const gchar * const *) extension->priv->cc, cc)) {
+       if (e_util_strv_equal (cc, extension->priv->cc)) {
                g_mutex_unlock (&extension->priv->property_lock);
                return;
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]