Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File5.20.16 DTA TOS Diese Struktur ist wie folgt definiert: typedef struct { int8_t d_reserved[21]; /* für GEMDOS reserviert */ uint8_t d_attrib; /* Datei-Attribut */ uint16_t d_time; /* Uhrzeit */ uint16_t d_date; /* Datum */ uint32_t d_length; /* Dateilänge */ int8_t d_fname[14]; /* Dateiname */ } DTA; rekursive Suche in Ordnern In je einer DTA werden genau alle nötigen Informationen gespeichert, die nach einem Fsfirst für weitere Fsnext benötigt werden. Das heißt, daß auf keinen Fall erneut Fsfirst für andere Verzeichnisse/Wildcards aufrufen sollte, solange noch weitere Fsnext-Aufrufe in der Verzeichnis-Ebene gemachen werden. Bei einer rekursiven Suche mußt für jedes neue Fsfirst eine eigene DTA verwendet werden, die solange erhalten bleiben muß, bis alle Fsnext für den Fsfirst getätigt sind. Hier ein Bsp in pseudo-C: void durchsuche_verzeichnis (int8_t *pfadname) { DTA_Record local_dta, saved_dta; saved_dta = GetDTA (); SetDTA (local_dta); err = Fsfirst (pfadname, ...); while (err == 0) { if (local_dta.attrib == subdir) { // rekursive suche in sub-dir durchsuche_verzeichnis (subdir-pfadname); } else { ... normales file auswerten } err = Fsnext (); } SetDTA (saved_dta); } Querverweis: Fgetdta Fsetdta Fsfirst Fsnext GEMDOS