void ParseThread::FindIncludedFiles(ParseRequest* req, std::set<std::string>* newSet) { wxArrayString searchPaths, excludePaths, filteredFileList; GetSearchPaths( searchPaths, excludePaths ); DEBUG_MESSAGE( wxString::Format(wxT("Initial workspace files count is %u"), (unsigned int)req->_workspaceFiles.size()) ) ; for(size_t i=0; i<req->_workspaceFiles.size(); i++) { wxString name(req->_workspaceFiles.at(i).c_str(), wxConvUTF8); wxFileName fn(name); fn.MakeAbsolute(); if(TagsManagerST::Get()->IsBinaryFile(fn.GetFullPath())) continue; filteredFileList.Add( fn.GetFullPath() ); } wxArrayString arrFiles; // Clear the results once { // Before using the 'crawlerScan' we lock it, since it is not mt-safe wxCriticalSectionLocker locker( TagsManagerST::Get()->m_crawlerLocker ); fcFileOpener::Instance()->ClearResults(); fcFileOpener::Instance()->ClearSearchPath(); for(size_t i=0; i<searchPaths.GetCount(); i++) { const wxCharBuffer path = _C(searchPaths.Item(i)); DEBUG_MESSAGE( wxString::Format(wxT("ParseThread: Using Search Path: %s "), searchPaths.Item(i).c_str()) ); fcFileOpener::Instance()->AddSearchPath(path.data()); } for(size_t i=0; i<excludePaths.GetCount(); i++) { const wxCharBuffer path = _C(excludePaths.Item(i)); DEBUG_MESSAGE( wxString::Format(wxT("ParseThread: Using Exclude Path: %s "), excludePaths.Item(i).c_str()) ); fcFileOpener::Instance()->AddExcludePath(path.data()); } for(size_t i=0; i<filteredFileList.GetCount(); i++) { const wxCharBuffer cfile = filteredFileList.Item(i).mb_str(wxConvUTF8); crawlerScan(cfile.data()); if( TestDestroy() ) { return; } } newSet->insert(fcFileOpener::Instance()->GetResults().begin(), fcFileOpener::Instance()->GetResults().end()); } }
void ParseThread::GetFileListToParse(const wxString& filename, wxArrayString& arrFiles) { if ( !this->IsCrawlerEnabled() ) { return; } { wxCriticalSectionLocker locker( TagsManagerST::Get()->m_crawlerLocker ); wxArrayString includePaths, excludePaths; GetSearchPaths( includePaths, excludePaths ); fcFileOpener::Instance()->ClearResults(); fcFileOpener::Instance()->ClearSearchPath(); for(size_t i=0; i<includePaths.GetCount(); i++) { fcFileOpener::Instance()->AddSearchPath( includePaths.Item(i).mb_str(wxConvUTF8).data() ); } for(size_t i=0; i<excludePaths.GetCount(); i++) { fcFileOpener::Instance()->AddExcludePath(excludePaths.Item(i).mb_str(wxConvUTF8).data()); } // Invoke the crawler const wxCharBuffer cfile = filename.mb_str(wxConvUTF8); // Skip binary files if(TagsManagerST::Get()->IsBinaryFile(filename)) { DEBUG_MESSAGE( wxString::Format(wxT("Skipping binary file %s"), filename.c_str()) ); return; } // Before using the 'crawlerScan' we lock it, since it is not mt-safe crawlerScan( cfile.data() ); } std::set<std::string> fileSet = fcFileOpener::Instance()->GetResults(); std::set<std::string>::iterator iter = fileSet.begin(); for (; iter != fileSet.end(); iter++ ) { wxFileName fn(wxString((*iter).c_str(), wxConvUTF8)); fn.MakeAbsolute(); if ( arrFiles.Index(fn.GetFullPath()) == wxNOT_FOUND ) { arrFiles.Add(fn.GetFullPath()); } } }
bool LadspaEffectsModule::AutoRegisterPlugins(PluginManagerInterface & pm) { // Autoregister effects that we "think" are ones that have been shipped with // Audacity. A little simplistic, but it should suffice for now. wxArrayString pathList = GetSearchPaths(); wxArrayString files; for (int i = 0; i < WXSIZEOF(kShippedEffects); i++) { files.Clear(); pm.FindFilesInPathList(kShippedEffects[i], pathList, files); for (size_t j = 0, cnt = files.GetCount(); j < cnt; j++) { if (!pm.IsPluginRegistered(files[j])) { RegisterPlugin(pm, files[j]); } } } // We still want to be called during the normal registration process return false; }
wxArrayString LadspaEffectsModule::FindPlugins(PluginManagerInterface & pm) { wxArrayString pathList = GetSearchPaths(); wxArrayString files; #if defined(__WXMAC__) // Recursively scan for all shared objects pm.FindFilesInPathList(wxT("*.so"), pathList, files, true); #elif defined(__WXMSW__) // Recursively scan for all DLLs pm.FindFilesInPathList(wxT("*.dll"), pathList, files, true); #else // Recursively scan for all shared objects pm.FindFilesInPathList(wxT("*.so"), pathList, files, true); #endif return files; }