Hallo!
Ich hab dir mal schnell ein kleines Beispiel erstellt. (Testsystem: V5R3)
Diverse Aktionen (überprüfen auf *NULL bei Pointern/abfangen von "." und ".." bei OpenDir & ähnliches hab ich absichtlich nicht mit kopiert).
Code:
**************************************************************************
* ReadDir_r - Entry/Result DataStructure *
**************************************************************************
D DirEnt DS Based(Ptr_Result)
D Res01 16A
D FileNoGenId 10U 0
D FileNo 10U 0
D RecLen 10U 0
D Res03 10I 0
D Res04 6A
D Res05 2A
D NlsInfo 12A
D CCSID 10I 0 Overlay(NlsInfo:1)
D CtryId 2A Overlay(NlsInfo:5)
D LangId 3A Overlay(NlsInfo:7)
D Res06 3A Overlay(NlsInfo:10)
D FileNameLen 10U 0
D FileName 640A
**************************************************************************
* ReadDir_r - Prototyp *
**************************************************************************
D ReadDir PR 10I 0 ExtProc('readdir_r')
D Directory * Value Options(*String)
D Entry *
D Result *
/Free
Ptr_Dir = OpenDir('/home/test');
DoU (Ptr_Result = *NULL);
RtnCode = ReadDir(Ptr_Dir:Ptr_Entry:Ptr_Result);
EndDo;
RtnCode = CloseDir(Ptr_Dir);
*InLr = *On;
/End-Free
Falls sich ein Fehler eingeschlichen hat, bitte ich um Rückmeldung.
Lg,
Sam
Nachtrag bezüglich Error Code 3408:
EFAULT 3408 The address used for an argument was not correct. In attempting to use an argument in a call, the system detected an address that is not valid.
Bookmarks