diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel/filesystem/path.hpp | 7 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/vfs.cpp | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/kernel/kernel/filesystem/path.hpp b/kernel/kernel/filesystem/path.hpp index c2d8e588..a0dbd1f1 100644 --- a/kernel/kernel/filesystem/path.hpp +++ b/kernel/kernel/filesystem/path.hpp @@ -79,9 +79,12 @@ namespace kernel::filesystem::path return {"", ""}; } - auto search_from = path.length() > 1 ? path.length() - 2 : 0; - auto last_separator_index = path.rfind('/', search_from); + if (path.length() > 1 && path.back() == '/') + { + path = path.substr(0, path.length() - 1); + } + auto last_separator_index = path.rfind('/'); if (last_separator_index == std::string_view::npos) { return {"", path}; diff --git a/kernel/kernel/filesystem/vfs.cpp b/kernel/kernel/filesystem/vfs.cpp index 2e4145db..4691dac3 100644 --- a/kernel/kernel/filesystem/vfs.cpp +++ b/kernel/kernel/filesystem/vfs.cpp @@ -189,6 +189,8 @@ namespace kernel::filesystem return kstd::failure(vfs_errc::invalid_path); } + // TODO check whether the target already exists + auto [parent_path, name] = path::split_into_path_and_filename(path); if (name.empty()) { |
