char *strv_find(char **l, const char *name) _pure_;
char *strv_find_prefix(char **l, const char *name) _pure_;
+char *strv_find_startswith(char **l, const char *name) _pure_;
void strv_free(char **l);
DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free);
char **strv_remove(char **l, const char *s);
char **strv_uniq(char **l);
+bool strv_equal(char **a, char **b);
+
#define strv_contains(l, s) (!!strv_find((l), (s)))
char **strv_new(const char *x, ...) _sentinel_;
}
char **strv_split(const char *s, const char *separator);
-int strv_split_quoted(char ***t, const char *s);
char **strv_split_newlines(const char *s);
+int strv_split_quoted(char ***t, const char *s, bool relax);
+
char *strv_join(char **l, const char *separator);
char *strv_join_quoted(char **l);