- result = wxFindNextFile();
- }
-#endif // !VMS
-
- return result;
-}
-
-wxString wxFindNextFile()
-{
- wxString result;
-
-#ifndef __VMS__
- wxCHECK_MSG( gs_dirStream, result, "must call wxFindFirstFile first" );
-
- // Find path only so we can concatenate
- // found file onto path
- wxString path(wxPathOnly(gs_strFileSpec));
- wxString name(wxFileNameFromPath(gs_strFileSpec));
-
- /* MATTHEW: special case: path is really "/" */
- if ( !path && gs_strFileSpec[0u] == '/')
- path = '/';
-
- // Do the reading
- struct dirent *nextDir;
- for ( nextDir = readdir(gs_dirStream);
- nextDir != NULL;
- nextDir = readdir(gs_dirStream) )
- {
- if (wxMatchWild(name, nextDir->d_name))
- {
- result.Empty();
- if ( !path.IsEmpty() )
- {
- result = path;
- if ( path != '/' )
- result += '/';
- }
-
- result += nextDir->d_name;
-
- // Only return "." and ".." when they match
- bool isdir;
- if ( (strcmp(nextDir->d_name, ".") == 0) ||
- (strcmp(nextDir->d_name, "..") == 0))
- {
- if ( (gs_findFlags & wxDIR) != 0 )
- isdir = TRUE;
- else
- continue;
- }
- else
- isdir = wxDirExists(result);
-
- // and only return directories when flags & wxDIR
- if ( !gs_findFlags ||
- ((gs_findFlags & wxDIR) && isdir) ||
- ((gs_findFlags & wxFILE) && !isdir) )
- {
- return result;
- }
- }