diff --git a/components/dfs/filesystems/jffs2/dfs_jffs2.c b/components/dfs/filesystems/jffs2/dfs_jffs2.c index 176f7c65f03f5b48c70f226861eff88570cf03ec..5c06149a8ce624bfbdfd02e8ac4250ca6f2ca7c1 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 14ce10fa7abb569329e9c8ab9fba57da10893422..f9608e4ac592bd626acace6cb97d8dede186775e 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);