diff options
Diffstat (limited to 'src/filesystem.c')
-rw-r--r-- | src/filesystem.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/filesystem.c b/src/filesystem.c index c8a58c1..0ec9802 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -193,6 +193,28 @@ lilv_path_parent(const char* path) } char* +lilv_path_filename(const char* path) +{ + const size_t path_len = strlen(path); + size_t last_sep = path_len; + for (size_t i = 0; i < path_len; ++i) { + if (lilv_is_dir_sep(path[i])) { + last_sep = i; + } + } + + if (last_sep >= path_len) { + return lilv_strdup(path); + } + + const size_t ret_len = path_len - last_sep; + char* const ret = (char*)calloc(ret_len + 1, 1); + + strncpy(ret, path + last_sep + 1, ret_len); + return ret; +} + +char* lilv_path_join(const char* a, const char* b) { if (!a) { |