# HG changeset patch # User asl # Date 1118137552 0 # Node ID 187dfdcdf712579561a6725bb94cc2661401bf2a # Parent 3038ada9d671454b70cef7e4c48b55c61f80b55c * src/fatfs_supp.c: lseek returned EEOF when at the end of the file rather than the current position. diff --git a/packages/fs/fat/current/ChangeLog b/packages/fs/fat/current/ChangeLog --- a/packages/fs/fat/current/ChangeLog +++ b/packages/fs/fat/current/ChangeLog @@ -1,3 +1,8 @@ +2005-06-07 Savin Zlobec + + * src/fatfs_supp.c: lseek returned EEOF when at the end of the + file rather than the current position. + 2005-03-27 Andrew Lunn * tests/fatfs1.c: Fixed various compiler warnings about types passed to diff --git a/packages/fs/fat/current/src/fatfs_supp.c b/packages/fs/fat/current/src/fatfs_supp.c --- a/packages/fs/fat/current/src/fatfs_supp.c +++ b/packages/fs/fat/current/src/fatfs_supp.c @@ -1172,8 +1172,10 @@ get_position_from_off(fatfs_disk_t * // Err could be EEOF wich means that the given // offset if out of given file (cluster chain) - if (ENOERR == err) - *pos = new_pos; + if (EEOF == err) + new_pos.cluster_pos = disk->cluster_size; + + *pos = new_pos; return err; } @@ -2056,11 +2058,18 @@ fatfs_setpos(fatfs_disk_t *disk, fatfs_data_pos_t *pos, cyg_uint32 offset) { + int err; + CYG_CHECK_DATA_PTRC(disk); CYG_CHECK_DATA_PTRC(file); CYG_CHECK_DATA_PTRC(pos); - return get_position_from_off(disk, file->cluster, offset, pos, CO_NONE); + err = get_position_from_off(disk, file->cluster, offset, pos, CO_NONE); + + if (EEOF == err && offset == file->size) + return ENOERR; + else + return err; } // -------------------------------------------------------------------------