void CMissionManager::CleanupModFolder(const idStr& name) { CModInfoPtr info = GetModInfo(name); if (info == NULL) { DM_LOG(LC_MAINMENU, LT_INFO)LOGSTRING("Cannot erase mission folder for mod %s, mission info not found\r", name.c_str()); return; } // Delete folder contents fs::path modPath = info->GetModFolderPath().c_str(); if (fs::exists(modPath)) { // Iterate over all files in the mod folder for (fs::directory_iterator i(modPath); i != fs::directory_iterator(); ++i) { if (boost::algorithm::to_lower_copy(fs::extension(*i)) == ".pk4") { DM_LOG(LC_MAINMENU, LT_INFO)LOGSTRING("Won't erase PK4 files %s\r", i->path().string().c_str()); continue; } if (i->path().filename() == cv_tdm_fm_desc_file.GetString() || i->path().filename() == cv_tdm_fm_notes_file.GetString() || i->path().filename() == cv_tdm_fm_splashimage_file.GetString()) { DM_LOG(LC_MAINMENU, LT_INFO)LOGSTRING("Won't erase meta data file %s\r", i->path().string().c_str()); continue; } DM_LOG(LC_MAINMENU, LT_INFO)LOGSTRING("Will erase recursively: %s\r", i->path().string().c_str()); fs::remove_all(*i); } } else { DM_LOG(LC_MAINMENU, LT_INFO)LOGSTRING("Cannot erase mod folder %s, directory not found\r", modPath.string().c_str()); return; } info->ClearModFolderSize(); }