summaryrefslogtreecommitdiff
path: root/firmware/drivers/fat.c
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-04-27 20:03:05 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-04-27 20:03:05 +0000
commit0ea9f3772ae6d398225bd17ce115a9452e888773 (patch)
tree5695d71d1d3aaaaf55ae0636689eedbd0006294d /firmware/drivers/fat.c
parent9a3c16dea87f6f46f15ff732998e61310908dc7e (diff)
downloadrockbox-0ea9f3772ae6d398225bd17ce115a9452e888773.tar.gz
rockbox-0ea9f3772ae6d398225bd17ce115a9452e888773.zip
Added fat_seek()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@271 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/fat.c')
-rw-r--r--firmware/drivers/fat.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c
index fe5cef878d..3eab47e8b3 100644
--- a/firmware/drivers/fat.c
+++ b/firmware/drivers/fat.c
@@ -860,6 +860,34 @@ int fat_read(struct bpb *bpb,
860 return sectorcount; 860 return sectorcount;
861} 861}
862 862
863int fat_seek(struct bpb *bpb,
864 struct fat_fileent *ent,
865 int seeksector )
866{
867 int cluster = ent->firstcluster;
868 int sector;
869 int numsec = 0;
870 int i;
871
872 for (i=0; i<seeksector; i++) {
873 numsec++;
874 if ( numsec >= bpb->bpb_secperclus ) {
875 cluster = get_next_cluster(bpb,cluster);
876 if (!cluster)
877 /* end of file */
878 return -1;
879
880 sector = cluster2sec(bpb,cluster);
881 if (sector<0)
882 return -2;
883 numsec=0;
884 }
885 }
886 ent->nextcluster = cluster;
887 ent->nextsector = sector;
888 ent->sectornum = numsec;
889 return 0;
890}
863 891
864int fat_opendir(struct bpb *bpb, 892int fat_opendir(struct bpb *bpb,
865 struct fat_dirent *ent, 893 struct fat_dirent *ent,