예제 #1
0
void __for_each_file(const std::string& dirname, const std::string& suff,
										 const List& order_list, const List& disable_list, 
										 Function f)
{
	GDir *dir = g_dir_open(dirname.c_str(), 0, NULL);	
  if (dir) {
		const gchar *filename;		

    while ((filename = g_dir_read_name(dir))!=NULL) 
    {	
			std::string fullfilename(dirname+G_DIR_SEPARATOR_S+filename);
				
			if (g_file_test(fullfilename.c_str(), G_FILE_TEST_IS_DIR)) //folder
				__for_each_file(fullfilename, suff, order_list, disable_list, f);
      else if (g_str_has_suffix(filename, suff.c_str()) && std::find(order_list.begin(), order_list.end(), fullfilename)==order_list.end()) 
      {
				 bool disable=std::find(disable_list.begin(), 
																disable_list.end(), 
																fullfilename)!=disable_list.end();
				 f(fullfilename, disable);
			}
		}
		g_dir_close(dir);
	}
}
예제 #2
0
파일: file.cpp 프로젝트: kuanyui/dotfiles
void for_each_file(const List& dirs_list, const std::string& suff,
                   const List& order_list, const List& disable_list, 
                   const std::function<void (const std::string&, bool)>& f)
{
	for (const std::string & item : order_list) {
		const bool disable = std::find(disable_list.begin(), disable_list.end(), item) != disable_list.end();
		f(item, disable);
	}
	for (const std::string& item : dirs_list)
		__for_each_file(item, suff, order_list, disable_list, f);			
}
예제 #3
0
파일: file.hpp 프로젝트: softnhard/StarDict
void for_each_file(const List& dirs_list, const std::string& suff,
                   const List& order_list, const List& disable_list,
                   Function f)
{
    List::const_iterator it;
    for (it=order_list.begin(); it!=order_list.end(); ++it) {
        bool disable=std::find(disable_list.begin(), disable_list.end(),
                               *it)!=disable_list.end();
        f(*it, disable);
    }
    for (it=dirs_list.begin(); it!=dirs_list.end(); ++it)
        __for_each_file(*it, suff, order_list, disable_list, f);
}