summaryrefslogtreecommitdiff
path: root/components/dfs
diff options
context:
space:
mode:
author[email protected] <[email protected]>2012-02-15 07:28:47 +0000
committer[email protected] <[email protected]>2012-02-15 07:28:47 +0000
commit6202b6c155dfd68fac6b75810501576decc5b9f4 (patch)
tree698e41f72ea74e2836926e80e521cd89744f1e52 /components/dfs
parent70463829c527df2c7bbb4d28951abcbacaa7bad9 (diff)
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
Diffstat (limited to 'components/dfs')
-rw-r--r--components/dfs/filesystems/jffs2/dfs_jffs2.c6
-rw-r--r--components/dfs/src/dfs_posix.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/components/dfs/filesystems/jffs2/dfs_jffs2.c b/components/dfs/filesystems/jffs2/dfs_jffs2.c
index 176f7c65f0..5c06149a8c 100644
--- a/components/dfs/filesystems/jffs2/dfs_jffs2.c
+++ b/components/dfs/filesystems/jffs2/dfs_jffs2.c
@@ -438,10 +438,12 @@ static int dfs_jffs2_lseek(struct dfs_fd* file,
jffs2_file = (cyg_file *)(file->data);
/* set offset as current offset */
- jffs2_file_lseek(jffs2_file, &offset, SEEK_SET);
+ result = jffs2_file_lseek(jffs2_file, &offset, SEEK_SET);
if (result)
return jffs2_result_to_dfs(result);
- return 0;
+ /* update file position */
+ file->pos = offset;
+ return offset;
}
/* return the size of struct dirent*/
diff --git a/components/dfs/src/dfs_posix.c b/components/dfs/src/dfs_posix.c
index 14ce10fa7a..f9608e4ac5 100644
--- a/components/dfs/src/dfs_posix.c
+++ b/components/dfs/src/dfs_posix.c
@@ -199,11 +199,16 @@ off_t lseek(int fd, off_t offset, int whence)
case DFS_SEEK_END:
offset += d->size;
break;
+
+ default:
+ rt_set_errno(-DFS_STATUS_EINVAL);
+ return -1;
+
}
if (offset < 0)
{
- rt_set_errno(DFS_STATUS_EINVAL);
+ rt_set_errno(-DFS_STATUS_EINVAL);
return -1;
}
result = dfs_file_lseek(d, offset);