return path_make_relative(from, to, ret);
}
-char* path_startswith_strv(const char *p, char **set) {
- STRV_FOREACH(s, set) {
+char* path_startswith_strv(const char *p, char * const *strv) {
+ assert(p);
+
+ STRV_FOREACH(s, strv) {
char *t;
t = path_startswith(p, *s);
return path_equal(path, "/");
}
-bool path_strv_contains(char **l, const char *path) {
+bool path_strv_contains(char * const *l, const char *path) {
+ assert(path);
+
STRV_FOREACH(i, l)
if (path_equal(*i, path))
return true;
return false;
}
-bool prefixed_path_strv_contains(char **l, const char *path) {
+bool prefixed_path_strv_contains(char * const *l, const char *path) {
+ assert(path);
+
STRV_FOREACH(i, l) {
const char *j = *i;
j++;
if (*j == '+')
j++;
+
if (path_equal(j, path))
return true;
}
/* Note: the search terminates on the first NULL item. */
#define PATH_IN_SET(p, ...) path_strv_contains(STRV_MAKE(__VA_ARGS__), p)
-char* path_startswith_strv(const char *p, char **set);
+char* path_startswith_strv(const char *p, char * const *strv);
#define PATH_STARTSWITH_SET(p, ...) path_startswith_strv(p, STRV_MAKE(__VA_ARGS__))
int path_strv_make_absolute_cwd(char **l);
return isempty(path) ? "/" : path;
}
-bool path_strv_contains(char **l, const char *path);
-bool prefixed_path_strv_contains(char **l, const char *path);
+bool path_strv_contains(char * const *l, const char *path);
+bool prefixed_path_strv_contains(char * const *l, const char *path);
int path_glob_can_match(const char *pattern, const char *prefix, char **ret);