From e5e9bc3e65d34de202b41ca51d8bff117e240830 Mon Sep 17 00:00:00 2001 From: Hardeep Sidhu Date: Sat, 15 Mar 2003 21:13:35 +0000 Subject: Previous change broke read after seek. Reverted that change and added temporary fix in flush_cache to make sure we are on correct sector before writing to disk. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3448 a1c6a512-1295-4272-9138-f99709370657 --- firmware/common/file.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'firmware/common/file.c') diff --git a/firmware/common/file.c b/firmware/common/file.c index 4443b55bca..d2cad7c647 100644 --- a/firmware/common/file.c +++ b/firmware/common/file.c @@ -337,9 +337,15 @@ static int flush_cache(int fd) { int rc; struct filedesc* file = &openfiles[fd]; - + int sector = file->fileoffset / SECTOR_SIZE; + DEBUGF("Flushing dirty sector cache\n"); + /* make sure we are on correct sector */ + rc = fat_seek(&(file->fatfile), sector); + if ( rc < 0 ) + return rc * 10 - 3; + rc = fat_readwrite(&(file->fatfile), 1, file->cache, true ); if ( rc < 0 ) @@ -573,13 +579,6 @@ int lseek(int fd, int offset, int whence) return rc * 10 - 6; } file->cacheoffset = sectoroffset; - - /* seek back to current sector */ - rc = fat_seek(&(file->fatfile), newsector); - if ( rc < 0 ) { - errno = EIO; - return rc * 10 - 7; - } } else file->cacheoffset = -1; -- cgit v1.2.3