diff --git a/libports/src/test/libc_ffat/main.cc b/libports/src/test/libc_ffat/main.cc index fa9175920..9f7d43360 100644 --- a/libports/src/test/libc_ffat/main.cc +++ b/libports/src/test/libc_ffat/main.cc @@ -43,6 +43,7 @@ int main(int argc, char *argv[]) ssize_t count; char const *dir_name = "/testdir"; + char const *dir_name2 = "testdir2"; char const *file_name = "test.tst"; char const *file_name2 = "test2.tst"; char const *file_name3 = "test3.tst"; @@ -64,6 +65,9 @@ int main(int argc, char *argv[]) /* change to new directory */ CALL_AND_CHECK(ret, chdir(dir_name), ret == 0, "dir_name=%s", dir_name); + /* create subdirectory with relative path */ + CALL_AND_CHECK(ret, mkdir(dir_name2, 0777), ((ret == 0) || (errno == EEXIST)), "dir_name=%s", dir_name2); + /* write pattern to a file */ CALL_AND_CHECK(fd, open(file_name, O_CREAT | O_WRONLY), fd >= 0, "file_name=%s", file_name); CALL_AND_CHECK(count, write(fd, pattern, pattern_size), (size_t)count == pattern_size, ""); diff --git a/os/src/server/ram_fs/directory.h b/os/src/server/ram_fs/directory.h index 7617bcfa5..592edcbfd 100644 --- a/os/src/server/ram_fs/directory.h +++ b/os/src/server/ram_fs/directory.h @@ -114,7 +114,7 @@ namespace File_system { if (!sub_dir) throw Lookup_failed(); - return sub_dir->lookup_and_lock(path + i + 1); + return sub_dir->lookup_and_lock(path + i + 1, return_parent); } Directory *lookup_and_lock_dir(char const *path)