提交 97815375 编写于 作者: B bernard.xiong

fix romfs lookup and open directory issue.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1662 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 1992d175
......@@ -81,6 +81,8 @@ struct romfs_dirent* dfs_romfs_lookup(struct romfs_dirent* root_dirent, const ch
else
{
/* return file dirent */
if (subpath != RT_NULL) break; /* not the end of path */
return &dirent[index];
}
}
......@@ -146,9 +148,18 @@ int dfs_romfs_open(struct dfs_fd* file)
dirent = dfs_romfs_lookup(root_dirent, file->path, &size);
if (dirent == RT_NULL) return -DFS_STATUS_ENOENT;
/* is a directory but not with O_DIRECTORY flag */
if ((dirent->type == ROMFS_DIRENT_DIR) && !(file->flags & DFS_O_DIRECTORY))
return -DFS_STATUS_ENOENT;
/* entry is a directory file type */
if (dirent->type == ROMFS_DIRENT_DIR)
{
if (!(file->flags & DFS_O_DIRECTORY) )
return -DFS_STATUS_ENOENT;
}
else
{
/* entry is a file, but open it as a directory */
if (file->flags & DFS_O_DIRECTORY)
return -DFS_STATUS_ENOENT;
}
file->data = dirent;
file->size = size;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册