Hi Jaakko,
Make the whole change it one loop. No need to check if there is, empty
strings, at first.
It's greedy and, if there 1+ empty lines, you will anyway loop all over
again.
Tomasz
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)
{
_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman