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:
parent
70463829c5
commit
6202b6c155
|
@ -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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue