FindFirst(39.0) ARP Programmers Manual FindFirst(39.0) ADDENDUM FOR FindFirst - Search for multilevel pattern match ADDITIONS IN V1.3 The FindFirst() and FindNext() functions have been rewritten in V1.3 of ARP to provide built in support for directory traversal, similar to the "ALL" keyword support available in various Amiga CLI commands. The enhancement has been made in a backwards compatible way such that applications which had used the documented FindFirst() interface prior to V1.3 of arp.library will continue to work. The AnchorPath data structure's "ap_Strlen" field, which was defined as a LONGWORD value in V1.1, has been switched to a WORD definition. The remaining WORD is split into a reserved field, and a BYTE ap_Flags field. Any applications which used FindFirst() under V1.1 initialized the ap_Flags field to ZERO as the high-order word of ap_Strlen. The new ALL support is enabled by setting bit APB_DOWILD in the ap_Flags variable. If this bit is set, you can use two other bits for directory traversal: If you SET APB_DODIR when a directory entry has been returned from FindFirst/FindNext, the next call to FindNext() will ENTER that directory. If APB_DODIR is left CLEARED, the next FindNext() call will continue on the current directory level. The bit APB_DIDDIR indicates that the current directory entry has already been processed. Thus, normally you should check APB_DIDDIR and if it is set do NOT set APB_DODIR. Also note the flag bit "APB_ITSWILD" which is set by FindFirst() to indicate if the name specified is a wildcard. If APB_ITSWILD is CLEAR, the name passed to FindFirst() is a simple filename, if SET, the name passed includes some wildcard characters. Following is a short pseudocode example for using the new ALL capability: anchor->ap_Flags = APF_DOWILD; rc = FindFirst( pattern, anchor); while ( rc == 0 ) { if ( anchor->ap_Info.fib_DirEntryType >= 0 ) { if ( anchor->Flags & APF_DIDDIR ) anchor->Flags |= APF_DODIR; anchor->Flags &= ~APF_DIDDIR; } }