From c9fb0982505291c6efab4abfc805fc907c575933 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Mon, 4 Nov 2002 14:59:46 +0000 Subject: Bugfix: lseek() did not invalidate sector cache when seeking to start of file. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2803 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/fat.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'firmware/drivers') diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index f6d6c73e74..26149d4e4a 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -1202,25 +1202,29 @@ int fat_readwrite( struct fat_file *file, int sectorcount, int fat_seek(struct fat_file *file, int seeksector ) { - int clusternum, sectornum, sector=0; + int clusternum=0, sectornum=0, sector=0; int cluster = file->firstcluster; int i; - seeksector--; - clusternum = seeksector / fat_bpb.bpb_secperclus; - sectornum = seeksector % fat_bpb.bpb_secperclus; - - for (i=0; i -1 ) + sector = cluster2sec(cluster) + sectornum; } - if ( sector > -1 ) - sector = cluster2sec(cluster) + sectornum; - LDEBUGF("fat_seek(%x) == %x, %x, %x\n", seeksector, cluster, sector, sectornum); -- cgit v1.2.3