about summary refs log tree commit diff stats
path: root/src/config/accounts.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-11-24 00:02:21 +0000
committerJames Booth <boothj5@gmail.com>2015-11-24 00:02:21 +0000
commita2f5e921f2e5fb4158aad14928882e694e5d8a85 (patch)
tree4cee60ed948b055060fccdac6b73dd6366b55f36 /src/config/accounts.c
parent97d1b964c3b998116f05fd41f26bfe2f724e3150 (diff)
downloadprofani-tty-a2f5e921f2e5fb4158aad14928882e694e5d8a85.tar.gz
Added conf_string_list_add
Diffstat (limited to 'src/config/accounts.c')
-rw-r--r--src/config/accounts.c43
1 files changed, 1 insertions, 42 deletions
diff --git a/src/config/accounts.c b/src/config/accounts.c
index 234bed1f..385e86f3 100644
--- a/src/config/accounts.c
+++ b/src/config/accounts.c
@@ -558,48 +558,7 @@ accounts_add_otr_policy(const char *const account_name, const char *const contac
     if (accounts_account_exists(account_name)) {
         GString *key = g_string_new("otr.");
         g_string_append(key, policy);
-        gsize length;
-        gchar **list = g_key_file_get_string_list(accounts, account_name, key->str, &length, NULL);
-        GList *glist = NULL;
-
-        // list found
-        if (list) {
-            int i = 0;
-            for (i = 0; i < length; i++) {
-                // item already in list, exit function
-                if (strcmp(list[i], contact_jid) == 0) {
-                    g_list_free_full(glist, g_free);
-                    g_strfreev(list);
-                    return;
-                }
-                // add item to our g_list
-                glist = g_list_append(glist, strdup(list[i]));
-            }
-
-            // item not found, add to our g_list
-            glist = g_list_append(glist, strdup(contact_jid));
-
-            // create the new list entry
-            const gchar* new_list[g_list_length(glist)+1];
-            GList *curr = glist;
-            i = 0;
-            while (curr) {
-                new_list[i++] = strdup(curr->data);
-                curr = g_list_next(curr);
-            }
-            new_list[i] = NULL;
-            g_key_file_set_string_list(accounts, account_name, key->str, new_list, g_list_length(glist));
-
-        // list not found
-        } else {
-            const gchar* new_list[2];
-            new_list[0] = strdup(contact_jid);
-            new_list[1] = NULL;
-            g_key_file_set_string_list(accounts, account_name, key->str, new_list, 1);
-        }
-
-        g_strfreev(list);
-        g_list_free_full(glist, g_free);
+        conf_string_list_add(accounts, account_name, key->str, contact_jid);
         g_string_free(key, TRUE);
 
         // check for and remove from other lists