Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
RT-Thread
rt-thread
提交
c6d4407c
R
rt-thread
项目概览
RT-Thread
/
rt-thread
大约 1 年 前同步成功
通知
774
Star
8911
Fork
4735
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c6d4407c
编写于
6月 04, 2015
作者:
B
Bernard Xiong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[DFS] Fix the fd clear issue.
上级
951fd542
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
19 deletion
+19
-19
components/dfs/src/dfs_file.c
components/dfs/src/dfs_file.c
+19
-19
未找到文件。
components/dfs/src/dfs_file.c
浏览文件 @
c6d4407c
...
...
@@ -21,6 +21,7 @@
* Date Author Notes
* 2005-02-22 Bernard The first version.
* 2011-12-08 Bernard Merges rename patch from iamcacy.
* 2015-05-27 Bernard Fix the fd clear issue.
*/
#include <dfs.h>
...
...
@@ -97,7 +98,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
{
/* clear fd */
rt_free
(
fd
->
path
);
rt_memset
(
fd
,
0
,
sizeof
(
*
fd
))
;
fd
->
path
=
RT_NULL
;
return
-
DFS_STATUS_ENOSYS
;
}
...
...
@@ -106,7 +107,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
{
/* clear fd */
rt_free
(
fd
->
path
);
rt_memset
(
fd
,
0
,
sizeof
(
*
fd
))
;
fd
->
path
=
RT_NULL
;
dfs_log
(
DFS_DEBUG_INFO
,
(
"open failed"
));
...
...
@@ -143,7 +144,7 @@ int dfs_file_close(struct dfs_fd *fd)
return
result
;
rt_free
(
fd
->
path
);
rt_memset
(
fd
,
0
,
sizeof
(
struct
dfs_fd
))
;
fd
->
path
=
RT_NULL
;
return
result
;
}
...
...
@@ -165,7 +166,7 @@ int dfs_file_ioctl(struct dfs_fd *fd, int cmd, void *args)
return
-
DFS_STATUS_EINVAL
;
fs
=
fd
->
fs
;
if
(
fs
->
ops
->
ioctl
!=
RT_NULL
)
if
(
fs
->
ops
->
ioctl
!=
RT_NULL
)
return
fs
->
ops
->
ioctl
(
fd
,
cmd
,
args
);
return
-
DFS_STATUS_ENOSYS
;
...
...
@@ -186,11 +187,11 @@ int dfs_file_read(struct dfs_fd *fd, void *buf, rt_size_t len)
struct
dfs_filesystem
*
fs
;
int
result
=
0
;
if
(
fd
==
RT_NULL
)
if
(
fd
==
RT_NULL
)
return
-
DFS_STATUS_EINVAL
;
fs
=
(
struct
dfs_filesystem
*
)
fd
->
fs
;
if
(
fs
->
ops
->
read
==
RT_NULL
)
if
(
fs
->
ops
->
read
==
RT_NULL
)
return
-
DFS_STATUS_ENOSYS
;
if
((
result
=
fs
->
ops
->
read
(
fd
,
buf
,
len
))
<
0
)
...
...
@@ -213,7 +214,7 @@ int dfs_file_getdents(struct dfs_fd *fd, struct dirent *dirp, rt_size_t nbytes)
struct
dfs_filesystem
*
fs
;
/* parameter check */
if
(
fd
==
RT_NULL
||
fd
->
type
!=
FT_DIRECTORY
)
if
(
fd
==
RT_NULL
||
fd
->
type
!=
FT_DIRECTORY
)
return
-
DFS_STATUS_EINVAL
;
fs
=
(
struct
dfs_filesystem
*
)
fd
->
fs
;
...
...
@@ -267,7 +268,7 @@ int dfs_file_unlink(const char *path)
result
=
fs
->
ops
->
unlink
(
fs
,
dfs_subdir
(
fs
->
path
,
fullpath
));
}
else
result
=
fs
->
ops
->
unlink
(
fs
,
fullpath
);
result
=
fs
->
ops
->
unlink
(
fs
,
fullpath
);
}
else
result
=
-
DFS_STATUS_ENOSYS
;
...
...
@@ -528,7 +529,7 @@ void ls(const char *pathname)
/* build full path for each file */
fullpath
=
dfs_normalize_path
(
path
,
dirent
.
d_name
);
if
(
fullpath
==
RT_NULL
)
if
(
fullpath
==
RT_NULL
)
break
;
if
(
dfs_file_stat
(
fullpath
,
&
stat
)
==
0
)
...
...
@@ -555,7 +556,7 @@ void ls(const char *pathname)
{
rt_kprintf
(
"No such directory
\n
"
);
}
if
(
pathname
==
RT_NULL
)
if
(
pathname
==
RT_NULL
)
rt_free
(
path
);
}
FINSH_FUNCTION_EXPORT
(
ls
,
list
directory
contents
);
...
...
@@ -632,15 +633,15 @@ static void copyfile(const char *src, const char *dst)
read_bytes
=
dfs_file_read
(
&
src_fd
,
block_ptr
,
BUF_SZ
);
if
(
read_bytes
>
0
)
{
int
length
;
int
length
;
length
=
dfs_file_write
(
&
fd
,
block_ptr
,
read_bytes
);
if
(
length
!=
read_bytes
)
{
/* write failed. */
rt_kprintf
(
"Write file data failed, errno=%d
\n
"
,
length
);
break
;
}
if
(
length
!=
read_bytes
)
{
/* write failed. */
rt_kprintf
(
"Write file data failed, errno=%d
\n
"
,
length
);
break
;
}
}
}
while
(
read_bytes
>
0
);
...
...
@@ -652,7 +653,6 @@ static void copyfile(const char *src, const char *dst)
extern
int
mkdir
(
const
char
*
path
,
mode_t
mode
);
static
void
copydir
(
const
char
*
src
,
const
char
*
dst
)
{
struct
dfs_fd
fd
;
struct
dirent
dirent
;
struct
stat
stat
;
int
length
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录