void FileSystem::ReadFolder(const std::string& dir) { tinydir_dir d; tinydir_open(&d, dir.c_str()); while (d.has_next) { tinydir_file file; tinydir_readfile(&d, &file); if (file.is_dir && strcmp(file.name, ".") && strcmp(file.name, "..")) { ReadFolder(file.path); } else { if (strcmp(file.name, ".") && strcmp(file.name, "..")) { (*this)[file.name] = file.path; } } tinydir_next(&d); } tinydir_close(&d); }
void FileSystem::Refresh() { clear(); for (const auto& folder : m_folders) { ReadFolder(folder); } }
char * CLoader7Z::ReadUnPackInfo(char * buf) { //ILogger::log() << "ReadUnPackInfo()\n"; if (*buf != kUnPackInfo) { //ILogger::log() << "Erreur ! ("<<__LINE__<<")\n"; throw "Fichier incorrect"; return buf; } ++buf; if (*buf != kFolder) { //ILogger::log() << "Erreur ! ("<<__LINE__<<")\n"; throw "Fichier incorrect"; return buf; } ++buf; uint64_t num_folders = ConvertUint64(buf); buf += 8; uint8_t external = *buf; ++buf; switch (external) { case 0: for (uint64_t i = 0; i < num_folders; ++i) { buf = ReadFolder(buf); } break; case 1: { //uint64_t data_stream_index = ConvertUint64(buf); buf += 8; break; } default: //ILogger::log() << "Erreur ! ("<<__LINE__<<")\n"; throw "Fichier incorrect"; return buf; } if (*buf != kCodersUnPackSize) { //ILogger::log() << "Erreur ! ("<<__LINE__<<")\n"; throw "Fichier incorrect"; return buf; } ++buf; /* for(Folders) for(Folder.NumOutStreams) UINT64 UnPackSize; */ if (*buf == kCRC) { //UnPackDigests[NumFolders] } if (*buf != kEnd) { //ILogger::log() << "Erreur ! ("<<__LINE__<<")\n"; throw "Fichier incorrect"; return buf; } ++buf; return buf; }