Hallo,
ich bin im Moment an einer FAT32 Implementierung auf ARM7. Das ganze
soll mit der Festplatte meines alten Notebooks laufen.
Es läuft soweit das wichtigste - ich kann Sektoren von der Platte lesen,
sowie Sektoren schreiben. Habe ich auch schon mittels Disk-Editor
überprüft.
Auch das Laden der FAT und so weiter klappt.
Womit ich mir jetzt etwas schwer tue: wie finde ich einen gewünschten
Eintrag in der FAT Directory Structure? Das sind ja immer diese 32 Bytes
langen Einträge, wo unter anderem auch der (kurze) Dateiname abgelegt
ist.
Ich habe eine Funktion FindFile, der wird ein String übergeben, z.B. so:
FindFile("/directory/filename.txt")
Die Funktion liefert dann einen Pointer zurück, mit dem das Programm
dann die Datei lesen bzw. beschreiben kann (das ist aber nicht das
Problem).
Der Stand bis jetzt:
Ich lade die FAT in einen 1k grossen Puffer. Auch vom Root Directory
werden die ersten beiden Sektoren in einen Puffer geladen.
Jetzt soll meine Funktion sich durch die Verzeichniseinträge hangeln,
und als erstes einen Eintrag namens "directory" finden. Problem dabie
ist aber: Die Dateinamen sind so dämlich formatiert! kurze Dateinamen
halt. Ich will aber lange. Was ich bisher programmiert habe, um diese
Dateinamen zu finden, ist ziemlicher murks; könnt ihr mir nicht einen
Tipp geben, wie es einigermassen elegant geht?
So wie ich mir das vorstelle, wird dann, wenn der Eintrag "directory"
gefunden wurde, dessen Startcluster eruiert. Dieser wird dann in den
Buffer geladen, wo vorher das Root-Directory drin war, und die Suche
beginnt von neuem, diesmal nach einem Eintrag namens "filename.txt".
Es ist also eine rekursive Funktion!
Kann mir wer auf die Sprünge helfen? wie macht ihr das so, mit dem
Suchen der Einträge?