chiark / gitweb /
shared: inline trivial auto-cleanup functions
[elogind.git] / src / shared / strv.c
index ec25755289a2c5a8e9aecc689693e5e0269ec0a4..7bcfabbf1a39d9901c74a830d372bbb505a8e13e 100644 (file)
@@ -64,14 +64,6 @@ void strv_free(char **l) {
         free(l);
 }
 
         free(l);
 }
 
-void strv_freep(char ***l) {
-        if (!l)
-                return;
-
-        strv_free(*l);
-        *l = NULL;
-}
-
 char **strv_copy(char **l) {
         char **r, **k;
 
 char **strv_copy(char **l) {
         char **r, **k;
 
@@ -305,6 +297,31 @@ char **strv_split_quoted(const char *s) {
         return r;
 }
 
         return r;
 }
 
+char **strv_split_newlines(const char *s) {
+        char **l;
+        unsigned n;
+
+        assert(s);
+
+        /* Special version of strv_split() that splits on newlines and
+         * suppresses an empty string at the end */
+
+        l = strv_split(s, NEWLINE);
+        if (!l)
+                return NULL;
+
+        n = strv_length(l);
+        if (n <= 0)
+                return l;
+
+        if (isempty(l[n-1])) {
+                free(l[n-1]);
+                l[n-1] = NULL;
+        }
+
+        return l;
+}
+
 char *strv_join(char **l, const char *separator) {
         char *r, *e;
         char **s;
 char *strv_join(char **l, const char *separator) {
         char *r, *e;
         char **s;