diff --git a/repos/dde_linux/src/lib/vfs/lxip/vfs.cc b/repos/dde_linux/src/lib/vfs/lxip/vfs.cc index 54f1e196a..d24c5d1c3 100644 --- a/repos/dde_linux/src/lib/vfs/lxip/vfs.cc +++ b/repos/dde_linux/src/lib/vfs/lxip/vfs.cc @@ -1748,8 +1748,11 @@ class Vfs::Lxip_file_system : public Vfs::File_system, return node ? dynamic_cast(node) : 0; } - char const *leaf_path(char const *path) override { - return path; } + char const *leaf_path(char const *path) override + { + Vfs::Node *node = _lookup(path); + return node ? path : nullptr; + } Vfs::Directory_service::Open_result open(char const *path, unsigned mode, diff --git a/repos/os/include/vfs/directory_service.h b/repos/os/include/vfs/directory_service.h index 0a71a7edc..b678f4259 100644 --- a/repos/os/include/vfs/directory_service.h +++ b/repos/os/include/vfs/directory_service.h @@ -223,6 +223,9 @@ struct Vfs::Directory_service : Interface virtual bool directory(char const *path) = 0; + /** + * Return leaf path or nullptr if the path does not exist + */ virtual char const *leaf_path(char const *path) = 0; };