mirror of
https://github.com/apache/nuttx.git
synced 2026-05-23 14:58:13 +08:00
fs/fat/fs_fat32.[c|h]: fix fseek bug when file size is multiple of cluster size
Unbinding `ff_currentcluster` and `f_pos`: 1. Added `ff_pos` in `struct fat_file_s`. 2. Added function `fat_zero_cluster` for doing zeroing for gap between EOF and new position beyond EOF. 3. Added function `fat_get_sectors` for getting the sector where `f_pos` is located, allocting new cluster when `f_pos` is beyond EOF. 4. Modify function `fat_read`, and `fat_write` with above functions. 5. Remove redundant logics in `fat_seek` since now new cluster is allocated when writing instead of seeking. Signed-off-by: Yinzhe Wu <Yinzhe.Wu@sony.com> Reviewed-by: Yuezhang Mo <Yuezhang.Mo@sony.com> Reviewed-by: Jacky Cao <Jacky.Cao@sony.com> Tested-by: Yinzhe Wu <Yinzhe.Wu@sony.com>
This commit is contained in:
+295
-255
File diff suppressed because it is too large
Load Diff
@@ -907,6 +907,7 @@ struct fat_file_s
|
||||
off_t ff_startcluster; /* Start cluster of file on media */
|
||||
off_t ff_currentsector; /* Current sector being operated on */
|
||||
off_t ff_cachesector; /* Current sector in the file buffer */
|
||||
off_t ff_pos; /* Current position in the file */
|
||||
uint8_t *ff_buffer; /* File buffer (for partial sector accesses) */
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user