This helper function takes in a heap-allocated buffer of heap-allocated
strings. If no strings should be removed, return the buffer. Else, free
all empty strings, place nonempty strings to a new container and return
it, freeing the old container.
---
 src/service.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/service.c b/src/service.c
index 2d8245e..1723586 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2926,6 +2926,38 @@ static DBusMessage *get_properties(DBusConnection *conn,
        return reply;
 }
 
+static char **remove_empty_strings(char **strv)
+{
+       int amount, length, index;
+       char **iter, **out;
+
+       amount = 0;
+       length = g_strv_length(strv);
+       iter = strv;
+
+       while (*iter)
+               if (strlen(*iter++))
+                       amount++;
+
+       if (amount == length - 1)
+               return strv;
+
+       out = g_new0(char *, amount+1);
+       index = 0;
+       iter = strv;
+
+       while (*iter) {
+               if (strlen(*iter))
+                       out[index++] = *iter;
+               else
+                       g_free(*iter);
+               iter++;
+       }
+
+       g_free(strv);
+       return out;
+}
+
 static int update_proxy_configuration(struct connman_service *service,
                                DBusMessageIter *array)
 {
-- 
2.1.0

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to