提交 6202b6c1 编写于 作者: G goprife@gmail.com

fix bugs in lseek in dfs_posix.c and dfs_jffs2.c

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1946 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 70463829
...@@ -438,10 +438,12 @@ static int dfs_jffs2_lseek(struct dfs_fd* file, ...@@ -438,10 +438,12 @@ static int dfs_jffs2_lseek(struct dfs_fd* file,
jffs2_file = (cyg_file *)(file->data); jffs2_file = (cyg_file *)(file->data);
/* set offset as current offset */ /* set offset as current offset */
jffs2_file_lseek(jffs2_file, &offset, SEEK_SET); result = jffs2_file_lseek(jffs2_file, &offset, SEEK_SET);
if (result) if (result)
return jffs2_result_to_dfs(result); return jffs2_result_to_dfs(result);
return 0; /* update file position */
file->pos = offset;
return offset;
} }
/* return the size of struct dirent*/ /* return the size of struct dirent*/
......
...@@ -199,11 +199,16 @@ off_t lseek(int fd, off_t offset, int whence) ...@@ -199,11 +199,16 @@ off_t lseek(int fd, off_t offset, int whence)
case DFS_SEEK_END: case DFS_SEEK_END:
offset += d->size; offset += d->size;
break; break;
default:
rt_set_errno(-DFS_STATUS_EINVAL);
return -1;
} }
if (offset < 0) if (offset < 0)
{ {
rt_set_errno(DFS_STATUS_EINVAL); rt_set_errno(-DFS_STATUS_EINVAL);
return -1; return -1;
} }
result = dfs_file_lseek(d, offset); result = dfs_file_lseek(d, offset);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册