13 BOOL
EnumFilesInDirectory ( const TCHAR
* szDirectory_
, const TCHAR
* szFileSpec
, MYENUMFILESPROC pProc
, long lParam
, BOOL bSubsToo
, BOOL bSubsMustMatchFileSpec
)
15 TCHAR szDirectory
[MAX_PATH
+1];
16 TCHAR szSearchPath
[MAX_PATH
+1];
17 TCHAR szTemp
[MAX_PATH
+1];
19 if ( safestrlen(szDirectory_
) > MAX_PATH
|| !szFileSpec
|| !pProc
)
22 _tcscpy ( szDirectory
, szDirectory_
);
25 _tcscpy ( szDirectory
, _T("") );
27 getcwd ( szDirectory
, sizeof(szDirectory
)-1 );
29 int dirlen
= _tcslen(szDirectory
);
30 if ( dirlen
> 0 && szDirectory
[dirlen
-1] != '\\' )
31 _tcscat ( szDirectory
, _T("\\") );
33 // first search for all files in directory that match szFileSpec...
34 _sntprintf ( szSearchPath
, sizeof(szSearchPath
)-1, _T("%s%s"), szDirectory
, szFileSpec
);
36 HANDLE hfind
= FindFirstFile ( szSearchPath
, &wfd
);
37 if ( hfind
!= INVALID_HANDLE_VALUE
)
41 if ( !_tcscmp ( wfd
.cFileName
, _T(".") ) || !_tcscmp ( wfd
.cFileName
, _T("..") ) )
43 if ( wfd
.dwFileAttributes
& FILE_ATTRIBUTE_DIRECTORY
)
45 if ( !bSubsMustMatchFileSpec
)
47 _sntprintf ( szTemp
, sizeof(szTemp
)-1, _T("%s%s"), szDirectory
, wfd
.cFileName
);
50 if ( !EnumFilesInDirectory ( szTemp
, szFileSpec
, pProc
, lParam
, bSubsToo
, bSubsMustMatchFileSpec
) )
57 _sntprintf ( szTemp
, sizeof(szTemp
)-1, _T("%s%s"), szDirectory
, wfd
.cFileName
);
58 FixLFN(szTemp
,szTemp
);
59 if ( !pProc ( &wfd
, szTemp
, lParam
) )
64 } while ( FindNextFile ( hfind
, &wfd
) );
67 if ( !bSubsToo
|| bSubsMustMatchFileSpec
)
70 // now search for all subdirectories...
71 _sntprintf ( szSearchPath
, sizeof(szSearchPath
)-1, _T("%s*.*"), szDirectory
);
72 hfind
= FindFirstFile ( szSearchPath
, &wfd
);
73 if ( hfind
!= INVALID_HANDLE_VALUE
)
77 if ( !_tcscmp ( wfd
.cFileName
, _T(".") ) || !_tcscmp ( wfd
.cFileName
, _T("..") ) )
79 if ( !(wfd
.dwFileAttributes
& FILE_ATTRIBUTE_DIRECTORY
) )
81 _sntprintf ( szTemp
, sizeof(szTemp
)-1, _T("%s%s"), szDirectory
, wfd
.cFileName
);
82 if ( FALSE
== EnumFilesInDirectory ( szTemp
, szFileSpec
, pProc
, lParam
, bSubsToo
, bSubsMustMatchFileSpec
) )
87 } while ( FindNextFile ( hfind
, &wfd
) );