Added missing implementation of config_key_string_list_set
authorEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Tue, 17 Sep 2013 18:22:19 +0000 (15:22 -0300)
committerEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Thu, 19 Sep 2013 22:45:26 +0000 (19:45 -0300)
Also fix config_key_string_set

Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
src/wkb-ibus-config-key.c

index 6853974..38f76d1 100644 (file)
@@ -112,7 +112,7 @@ _key_string_set(struct wkb_config_key *key, Eldbus_Message_Iter *iter)
         return EINA_FALSE;
      }
 
-   if ((*field = (const char *) key->field) != NULL)
+   if ((field = (const char *) key->field) && *field)
       eina_stringshare_del(*field);
 
    if (str && strlen(str))
@@ -143,6 +143,18 @@ _key_string_list_free(Eina_List **list)
 static Eina_Bool
 _key_string_list_set(struct wkb_config_key *key, Eldbus_Message_Iter *iter)
 {
+   const char *str;
+   Eina_List *list = NULL;
+   Eina_List **field;
+
+   while (eldbus_message_iter_get_and_next(iter, 's', &str))
+      list = eina_list_append(list,eina_stringshare_add(str));
+
+   if ((field = (Eina_List **) key->field) && *field)
+      _key_string_list_free(field);
+
+   *field = list;
+
    return EINA_TRUE;
 }
 
@@ -155,7 +167,6 @@ _key_string_list_get(struct wkb_config_key *key)
 /*
  * PUBLIC FUNCTIONS
  */
-
 struct wkb_config_key *
 wkb_config_key_int(const char *id, void *field)
 {