From 1c3217909b444b86f87f976925f05ac05555cc6d Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Wed, 8 May 2002 15:16:02 +0000 Subject: Added lseek() git-svn-id: svn://svn.rockbox.org/rockbox/trunk@518 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/fat.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'firmware/drivers/fat.c') diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index 3a3f63d9f1..a55a8a2864 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -838,22 +838,30 @@ int fat_seek(struct fat_file *file, int seeksector ) int numsec = 0; int i; - for (i=0; i= fat_bpb.bpb_secperclus ) { - cluster = get_next_cluster(cluster); - if (!cluster) - /* end of file */ - return -1; - - sector = cluster2sec(cluster); - if (sector<0) - return -2; - numsec=0; + if ( seeksector ) { + for (i=0; i= fat_bpb.bpb_secperclus ) { + cluster = get_next_cluster(cluster); + if (!cluster) + /* end of file */ + return -1; + + sector = cluster2sec(cluster); + if (sector<0) + return -2; + numsec=0; + } + else + sector++; } - else - sector++; } + else { + sector = cluster2sec(cluster); + if (sector<0) + return -2; + } + file->nextcluster = cluster; file->nextsector = sector; file->sectornum = numsec; -- cgit v1.2.3