bool Gmm_classifier::get_folders_in_dir(const std::string& path_to_parameters, std::vector<boost::filesystem::path>& paths_to_gmm){ namespace fs = boost::filesystem; fs::path someDir(path_to_parameters); fs::directory_iterator end_iter; if(!fs::exists(someDir) && !fs::is_directory(someDir)){ std::cerr << "Gmm_classifier::get_folders_in_dir no such directory: " << path_to_parameters << std::endl; return false; } if ( fs::exists(someDir) && fs::is_directory(someDir)) { for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) { paths_to_gmm.push_back(dir_iter->path()); } } return true; }
bool directoryManager::initialize() { // Get list of files in directory! std::string full_dir = string(input_directory) + "/"; #ifdef _USING_BOOST_ fs::path someDir(full_dir); if ( fs::exists(someDir) && fs::is_directory(someDir)) { fs::directory_iterator end_iter; for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) { if (fs::is_regular_file(dir_iter->status()) ) { std::stringstream temp; temp << dir_iter->path().filename(); string name; name = temp.str(); boost::replace_all(name, "\"", ""); if ((name == ".") || (name == "..") || (name[0] == '.') || (name.size() < 5)) continue; if (name.size() > 5) { if ((name[name.size()-4] != '.') && (name[name.size()-5] != '.')) continue; } else { if (name[name.size()-4] != '.') continue; } file_list.push_back(name); } } } else return false; return true; #else return false; #endif }
// Finds lua script files from given path (including subdirectories) and pushes them to scripts void Eluna::GetScripts(std::string path) { ELUNA_LOG_DEBUG("[Eluna]: GetScripts from path `%s`", path.c_str()); #ifdef USING_BOOST boost::filesystem::path someDir(path); boost::filesystem::directory_iterator end_iter; if (boost::filesystem::exists(someDir) && boost::filesystem::is_directory(someDir)) { lua_requirepath += path + "/?;" + path + "/?.lua;" + path + "/?.ext;" + path + "/?.dll;" + path + "/?.so;"; for (boost::filesystem::directory_iterator dir_iter(someDir); dir_iter != end_iter; ++dir_iter) { std::string fullpath = dir_iter->path().generic_string(); // Check if file is hidden #ifdef WIN32 DWORD dwAttrib = GetFileAttributes(fullpath.c_str()); if (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_HIDDEN)) continue; #endif #ifdef UNIX std::string name = dir_iter->path().filename().generic_string().c_str(); if (name != ".." || name != "." || name[0] == '.') continue; #endif // load subfolder if (boost::filesystem::is_directory(dir_iter->status())) { GetScripts(fullpath); continue; } if (boost::filesystem::is_regular_file(dir_iter->status())) { // was file, try add std::string filename = dir_iter->path().filename().generic_string(); AddScriptPath(filename, fullpath); } } } #else ACE_Dirent dir; if (dir.open(path.c_str()) == -1) // Error opening directory, return return; lua_requirepath += path + "/?;" + path + "/?.lua;" + path + "/?.ext;" + path + "/?.dll;" + path + "/?.so;"; ACE_DIRENT *directory = 0; while ((directory = dir.read())) { // Skip the ".." and "." files. if (ACE::isdotdir(directory->d_name)) continue; std::string fullpath = path + "/" + directory->d_name; // Check if file is hidden #ifdef WIN32 DWORD dwAttrib = GetFileAttributes(fullpath.c_str()); if (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_HIDDEN)) continue; #endif #ifdef UNIX std::string name = directory->d_name.c_str(); if (name != ".." || name != "." || name[0] == '.') continue; #endif ACE_stat stat_buf; if (ACE_OS::lstat(fullpath.c_str(), &stat_buf) == -1) continue; // load subfolder if ((stat_buf.st_mode & S_IFMT) == (S_IFDIR)) { GetScripts(fullpath); continue; } // was file, try add std::string filename = directory->d_name; AddScriptPath(filename, fullpath); } #endif }