summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/dfs/filesystems/elmfat/ff.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/components/dfs/filesystems/elmfat/ff.c b/components/dfs/filesystems/elmfat/ff.c
index 1896bf2051..f6b85c30c8 100644
--- a/components/dfs/filesystems/elmfat/ff.c
+++ b/components/dfs/filesystems/elmfat/ff.c
@@ -3033,10 +3033,22 @@ FRESULT f_seekdir(
int offset /* the seek offset */
)
{
- return dir_sdi(dj, offset); /* seek directory index to offset */
+ int i = 0;
+
+ if (dir_sdi(dj, 0) != FR_OK || offset < 0)
+ return FR_INT_ERR;
+
+ while(i < offset)
+ {
+ if(dir_read(dj) != FR_OK || dir_next(dj, 0) != FR_OK)
+ return FR_INT_ERR;
+ i++;
+ }
+ return FR_OK;
}
+
#if _FS_MINIMIZE == 0
/*-----------------------------------------------------------------------*/
/* Get File Status */