/** * @sa CL_Frame */ void CL_SlowFrame (int now, void* data) { /* language */ if (s_language->modified) { CL_LanguageTryToSet(s_language->string); } Irc_Logic_Frame(); CL_Reconnect(); HUD_Update(); }
void IntDownloadComplete(void) { std::string actual_md5 = MD5SUM(download.buf->ptr(), download.buf->maxsize()); Printf(PRINT_HIGH, "\nDownload complete, got %u bytes\n", download.buf->maxsize()); Printf(PRINT_HIGH, "%s\n %s\n", download.filename.c_str(), actual_md5.c_str()); if(download.md5 == "") { Printf(PRINT_HIGH, "Server gave no checksum, assuming valid\n", (int)download.buf->maxsize()); } else if(actual_md5 != download.md5) { Printf(PRINT_HIGH, " %s on server\n", download.md5.c_str()); Printf(PRINT_HIGH, "Download failed: bad checksum\n"); download.clear(); CL_QuitNetGame(); ClearDownloadProgressBar(); return; } // got the wad! save it! std::vector<std::string> dirs; std::string filename; size_t i; #ifdef _WIN32 const char separator = ';'; #else const char separator = ':'; #endif // Try to save to the wad paths in this order -- Hyper_Eye D_AddSearchDir(dirs, Args.CheckValue("-waddir"), separator); D_AddSearchDir(dirs, getenv("DOOMWADDIR"), separator); D_AddSearchDir(dirs, getenv("DOOMWADPATH"), separator); D_AddSearchDir(dirs, waddirs.cstring(), separator); dirs.push_back(startdir); dirs.push_back(progdir); dirs.erase(std::unique(dirs.begin(), dirs.end()), dirs.end()); for(i = 0; i < dirs.size(); i++) { filename.clear(); filename = dirs[i]; if(filename[filename.length() - 1] != PATHSEPCHAR) filename += PATHSEP; filename += download.filename; // check for existing file if(M_FileExists(filename.c_str())) { // there is an existing file, so use a new file whose name includes the checksum filename += "."; filename += actual_md5; } if (M_WriteFile(filename, download.buf->ptr(), download.buf->maxsize())) break; } // Unable to write if(i == dirs.size()) { download.clear(); CL_QuitNetGame(); return; } Printf(PRINT_HIGH, "Saved download as \"%s\"\n", filename.c_str()); download.clear(); CL_QuitNetGame(); CL_Reconnect(); ClearDownloadProgressBar(); }