]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
utils: add lxc_append_string()
authorChristian Brauner <christian.brauner@canonical.com>
Sun, 6 Nov 2016 18:48:58 +0000 (19:48 +0100)
committerChristian Brauner <christian.brauner@canonical.com>
Wed, 9 Nov 2016 18:27:58 +0000 (19:27 +0100)
lxc_append_string() appends strings without separator. This is mostly useful
for reading in whole files line-by-line.

Signed-off-by: Christian Brauner <christian.brauner@canonical.com>
src/lxc/utils.c
src/lxc/utils.h

index c912fe8f00231a4dc9e9a32b2501b6ec696e9baf..d6f8ecf0305bf8c7104ad53b141b4dbc0f7e4563 100644 (file)
@@ -1930,3 +1930,37 @@ out:
        fclose(f);
        return bret;
 }
+
+static int lxc_append_null_to_list(void ***list)
+{
+       int newentry = 0;
+       void **tmp;
+
+       if (*list)
+               for (; (*list)[newentry]; newentry++) {
+                       ;
+               }
+
+       tmp = realloc(*list, (newentry + 2) * sizeof(void **));
+       if (!tmp)
+               return -1;
+
+       *list = tmp;
+       (*list)[newentry + 1] = NULL;
+
+       return newentry;
+}
+
+int lxc_append_string(char ***list, char *entry)
+{
+       int newentry = lxc_append_null_to_list((void ***)list);
+       char *copy;
+
+       copy = strdup(entry);
+       if (!copy)
+               return -1;
+
+       (*list)[newentry] = copy;
+
+       return 0;
+}
index a0fa0e2a57eae3f65d9c074098d654d5765bea82..50e184712e0c200614bff2013283e45551239c8e 100644 (file)
@@ -258,6 +258,8 @@ extern char *lxc_append_paths(const char *first, const char *second);
 extern bool lxc_string_in_list(const char *needle, const char *haystack, char sep);
 extern char **lxc_string_split(const char *string, char sep);
 extern char **lxc_string_split_and_trim(const char *string, char sep);
+/* Append string to NULL-terminated string array. */
+extern int lxc_append_string(char ***list, char *entry);
 
 /* some simple array manipulation utilities */
 typedef void (*lxc_free_fn)(void *);