•  Back 
  •  Der Aufbau eines XFS 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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-File11.21.2.29  xfs_sfirst                                             TOS

 Name:         »xfs_sfirst« - sucht die erste passende Datei.

 Parameter:

                a0 =     DD * srchdir
                a1 =     char *name (ohne Pfad)
                d0 =     DTA *
                d1 =     int attrib
                -> d0 =  long errcode
                -> a0 =  SYMLINK * (ggf. Symlink)

 Beschreibung: Wird für Fsfirst benötigt. MiNT verwendet statt dieser 
               Funktion eine Kombination von Dreaddir und Fxattr, wozu 
               aber sehr viele Aufrufe des XFS-Treibers notwendig 
               sind. Der reservierte Bereich der DTA kann vom XFS frei 
               verwendet werden, falls dieser zu klein ist, muß mit 
               ähnlichen heuristischen Methoden wie in MiNT 
               vorgegangen werden, d.h. Zeiger in die DTA eingetragen 
               werden, die auf fest angelegte Deskriptoren zeigen.

               Diese Deskriptoren können aber nur nach heuristischen 
               Methoden freigegeben werden, weil man nie weiß, ob noch 
               ein Fsnext kommt oder nicht. Der Kernel ermittelt über 
               path2DD bereits den vollständigen Pfad, so daß nur noch 
               der reine Dateiname in a1 übergeben wird. Wie bei allen 
               DOS-Aufrufen, die einen Pfad verarbeiten, muß das XFS 
               darauf achten, daß der DD für die Dauer der Bearbeitung 
               geschützt wird. Das ist besonders dann kritisch, wenn 
               das Dateisystem reentrant ist.

               Ist eine gesuchte Datei ein symbolischer Link, muß als 
               Fehlercode in d0 ELINK und in a0 der Zeiger auf den 
               Link übergeben werden. Der Kernel ruft dann einfach 
               Fxattr auf, um die DTA zu füllen. Trat ein Diskwechsel 
               auf, ist E_CHNG zurückzugeben, der Kernel wiederholt 
               dann automatisch die Funktion. Das gilt auch für alle 
               anderen Funktionen.

               In jedem Fall muß dta_drive korrekt initialisiert 
               werden, z.B. per: dta.dta_drive = srchdir->dd_dmd- 
               >d_drive. Wird E_OK oder ELINK zurückgegeben, ohne daß 
               dta_drive initialisiert wurde, ist das Resultat 
               unvorhersehbar!

 Gruppe:       Aufbau eines XFS

 Querverweis:  XFS-Konzept in MagiC