bool FileFinder::Find(DirectorySpecifier &dir, Typecode type, bool recursive) { // Get list of entries in directory vector<dir_entry> entries; if (!dir.ReadDirectory(entries)) return false; sort(entries.begin(), entries.end()); // Iterate through entries vector<dir_entry>::const_iterator i, end = entries.end(); for (i = entries.begin(); i != end; i++) { // Construct full specifier of file/dir FileSpecifier file = dir + i->name; if (i->is_directory) { // Recurse into directory if (recursive) if (Find(file, type, recursive)) return true; } else { // Check file type and call found() function if (type == WILDCARD_TYPE || type == file.GetType()) if (found(file)) return true; } } return false; }
// ZZZ: code lifted and slightly altered from preferences_macintosh.h static bool found_some_file_callback( FileSpecifier& File, void *data) { bool FoundAll = true; int Filetype = File.GetType(); for(int i = 0; i < NUMBER_OF_FILE_TYPECODES_TO_FIND; i++) { if(!file_types_to_find[i].found && Filetype == file_types_to_find[i].type) { file_types_to_find[i].found = true; file_types_to_find[i].file = File; } FoundAll &= file_types_to_find[i].found; } // Return value indicates whether we want to continue the search return !FoundAll; }
bool FileFinder::Find(DirectorySpecifier &dir, Typecode type, bool recursive) { // Get list of entries in directory vector<dir_entry> entries; if (!dir.ReadDirectory(entries)) { return false; } sort(entries.begin(), entries.end()); // Iterate through entries vector<dir_entry>::const_iterator i, end = entries.end(); for (i = entries.begin(); i != end; i++) { // Construct full specifier of file/dir FileSpecifier file = dir + i->name; // DJB Skip our texture directories if ( dir.GetPathString().find ( "SpriteTextures" ) != string::npos || dir.GetPathString().find ( "TTEP" ) != string::npos ) { // Don't go down these paths return false; } if (i->is_directory) { // Recurse into directory if (recursive) { if (Find(file, type, recursive)) { return true; } } } else { // Check file type and call found() function if (type == WILDCARD_TYPE || type == file.GetType()) { if (found(file)) { return true; } } } } return false; }