summaryrefslogtreecommitdiffstats
path: root/src/state.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-11-12 18:10:14 -0500
committerDavid Robillard <d@drobilla.net>2022-11-16 10:22:55 -0500
commit6fe4c50fee3adf77f9ef18e89445a043db281eb8 (patch)
tree2a8872aba4075b0abd8c0a6d8a9001dcdcab0b16 /src/state.c
parentd9feb39a41cf3d0dfc4c797f1a7aee99d8609c16 (diff)
downloadlilv-6fe4c50fee3adf77f9ef18e89445a043db281eb8.tar.gz
lilv-6fe4c50fee3adf77f9ef18e89445a043db281eb8.tar.bz2
lilv-6fe4c50fee3adf77f9ef18e89445a043db281eb8.zip
Remove filesystem module
Diffstat (limited to 'src/state.c')
-rw-r--r--src/state.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/state.c b/src/state.c
index 63b26e6..58aebf6 100644
--- a/src/state.c
+++ b/src/state.c
@@ -1,7 +1,6 @@
// Copyright 2007-2022 David Robillard <d@drobilla.net>
// SPDX-License-Identifier: ISC
-#include "filesystem.h"
#include "lilv_internal.h"
#include "lilv/lilv.h"
@@ -258,6 +257,17 @@ make_path(LV2_State_Make_Path_Handle handle, const char* path)
return zix_path_join(NULL, state->dir, path);
}
+static bool
+path_is_child(const char* path, const char* dir)
+{
+ if (path && dir) {
+ const size_t path_len = strlen(path);
+ const size_t dir_len = strlen(dir);
+ return dir && path_len >= dir_len && !strncmp(path, dir, dir_len);
+ }
+ return false;
+}
+
static char*
abstract_path(LV2_State_Map_Path_Handle handle, const char* abs_path)
{
@@ -282,10 +292,10 @@ abstract_path(LV2_State_Map_Path_Handle handle, const char* abs_path)
return lilv_strdup(pm->rel);
}
- if (lilv_path_is_child(real_path, state->dir)) {
+ if (path_is_child(real_path, state->dir)) {
// File in state directory (loaded, or created by plugin during save)
path = zix_path_lexically_relative(NULL, real_path, state->dir);
- } else if (lilv_path_is_child(real_path, state->scratch_dir)) {
+ } else if (path_is_child(real_path, state->scratch_dir)) {
// File created by plugin earlier
path = zix_path_lexically_relative(NULL, real_path, state->scratch_dir);
if (state->copy_dir) {
@@ -1193,11 +1203,11 @@ lilv_state_make_links(const LilvState* state, const char* dir)
const PathMap* const pm = (const PathMap*)zix_tree_get(i);
char* const path = zix_path_join(NULL, dir, pm->rel);
- if (lilv_path_is_child(pm->abs, state->copy_dir) &&
+ if (path_is_child(pm->abs, state->copy_dir) &&
strcmp(state->copy_dir, dir)) {
// Link directly to snapshot in the copy directory
maybe_symlink(pm->abs, path);
- } else if (!lilv_path_is_child(pm->abs, dir)) {
+ } else if (!path_is_child(pm->abs, dir)) {
const char* link_dir = state->link_dir ? state->link_dir : dir;
char* pat = zix_path_join(NULL, link_dir, pm->rel);