Пример #1
0
void FileUtil::FindFilesInDirectory( std::string dir, std::string ext, std::vector< std::string > & fileList, bool recursive, bool includepathinfilename ) {
    
    if( dir[dir.length()-1] != '/' )
        dir = dir + '/';
    
    boost::filesystem::directory_iterator end_itr;
    for( boost::filesystem::directory_iterator i( dir ); i != end_itr; ++i )
    {
        std::string filename = i->path().filename().string();
        
        if( boost::filesystem::is_directory( i->status() ) ) {
            
            if( recursive )
                FindFilesInDirectory( dir + filename + "/", ext, fileList, recursive, includepathinfilename );
            
        } else if( ext == "" || filename.find( ext ) != std::string::npos )
            fileList.push_back( ( ( includepathinfilename && dir != "./" )? dir : "" ) + filename );
        
        
    }
    
}
Пример #2
0
bool opDriver::ValidateFiles(const opParameters& p) {
    /*=== files ===*/

    const vector<opString>& tmpFiles = p.Files.GetValues();
    opList<opString> Files(tmpFiles.begin(), tmpFiles.end());
    opList<opString>::iterator i = Files.Begin();
    opList<opString>::iterator end = Files.End();
    opList<opString>::iterator old;

    while (i != end) {
        path filepath = (*i).GetString();

        if (exists(filepath)) {
            filepath = to_relative_path(filepath);
            OhFiles.insert(filepath);
            old = i;
            ++i;
            Files.Erase(old);
            continue;
        }

        ++i;
    }

    /*=== files in -d locations ===*/

    const vector<opString>& Dirs = p.Directories.GetValues();

    for (size_t d = 0; d < Dirs.size(); d++) {
        i = Files.Begin();
        end = Files.End();

        while (i != end) {
            path filepath =
                Dirs[d].GetString() / to_relative_path((*i).GetString());

            if (exists(filepath)) {
                filepath = to_relative_path(filepath);
                OhFiles.insert(filepath);
                old = i;
                ++i;
                Files.Erase(old);
                continue;
            }

            ++i;
        }
    }

    /*=== error if files were not found ===*/

    if (!Files.IsEmpty()) {
        Log("Error: The following files were not found:");

        i = Files.Begin();
        end = Files.End();

        while (i != end) {
            Log("\t'" + *i + "'");

            ++i;
        }

        Log("");

        return false;
    }

    /*=== files in -ohd locations ===*/

    const vector<opString>& FileDirs = p.FileDirectories.GetValues();

    for (size_t d = 0; d < FileDirs.size(); d++)
        FindFilesInDirectory(FileDirs[d], ".oh", OhFiles);

    return true;
}
Пример #3
0
void FileUtil::FindFilesInDirectory( std::string dir, std::vector< std::string > & fileList ) {

    FindFilesInDirectory( dir, "", fileList , false, false );
    
}