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
This commit is contained in:
goprife@gmail.com 2012-02-15 07:28:47 +00:00
parent 70463829c5
commit 6202b6c155
2 changed files with 10 additions and 3 deletions

View File

@ -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*/

View File

@ -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);