Пример #1
0
//------------------------------------------------------------------------------------
OFS::ofs64 ExtractThread::generateList(OFS::FileList& list)
{
    unsigned int list_max = list.size();
    OFS::ofs64 file_size = 0;
    
    std::string tmpSaveCurrentDir;
    OFS::FileList subList;

    for(unsigned int i = 0;i < list_max;i++)
    {
        list[i].name = currentDir + list[i].name;
        file_size += list[i].file_size;

        if(list[i].flags & OFS::OFS_DIR)
        {
            tmpSaveCurrentDir = currentDir;
            currentDir = list[i].name + "/";

            subList = ofsFile->listFiles(currentDir.c_str());

            file_size += generateList(subList);

            for(unsigned int z = 0;z < subList.size();z++)
                list.push_back(subList[z]);

            currentDir = tmpSaveCurrentDir;
        }
    }

    return file_size;
}