//------------------------------------------------------------------------------------ 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; }