chiark / gitweb /
util: improve overflow checks
[elogind.git] / src / shared / strv.c
index c8d856344c18987b7c2dc6360cc4417b0820fd8c..1b8e27bc1b963aa6ccbe2a34d437880110bb6250 100644 (file)
@@ -64,6 +64,14 @@ void strv_free(char **l) {
         free(l);
 }
 
+void strv_freep(char ***l) {
+        if (!l)
+                return;
+
+        strv_free(*l);
+        *l = NULL;
+}
+
 char **strv_copy(char **l) {
         char **r, **k;
 
@@ -727,3 +735,18 @@ bool strv_overlap(char **a, char **b) {
 
         return false;
 }
+
+static int str_compare(const void *_a, const void *_b) {
+        const char **a = (const char**) _a, **b = (const char**) _b;
+
+        return strcmp(*a, *b);
+}
+
+char **strv_sort(char **l) {
+
+        if (strv_isempty(l))
+                return l;
+
+        qsort(l, strv_length(l), sizeof(char*), str_compare);
+        return l;
+}