static void opengl_purge_shader_cache_type(const char* ext) { SCP_string filter("*."); filter += ext; // Previously the cache files were stored in the mod directory. Since we have a better system now, those files // should be cleaned out. This is only needed if we have a mod directory since otherwise we would delete the actual // cache files if (Cmdline_mod != nullptr && strlen(Cmdline_mod) > 0) { SCP_vector<SCP_string> cache_files; cf_get_file_list(cache_files, CF_TYPE_CACHE, filter.c_str(), CF_SORT_NONE, nullptr, CF_LOCATION_TYPE_PRIMARY_MOD | CF_LOCATION_TYPE_SECONDARY_MODS); for (auto& file : cache_files) { cf_delete((file + "." + ext).c_str(), CF_TYPE_CACHE, CF_LOCATION_TYPE_PRIMARY_MOD | CF_LOCATION_TYPE_SECONDARY_MODS); } } SCP_vector<SCP_string> cache_files; SCP_vector<file_list_info> file_info; cf_get_file_list(cache_files, CF_TYPE_CACHE, filter.c_str(), CF_SORT_NONE, &file_info, CF_LOCATION_ROOT_USER | CF_LOCATION_ROOT_GAME | CF_LOCATION_TYPE_ROOT); Assertion(cache_files.size() == file_info.size(), "cf_get_file_list returned different sizes for file names and file informations!"); const auto TIMEOUT = 2.0 * 30.0 * 24.0 * 60.0 * 60.0; // purge timeout in seconds which is ~2 months const SCP_string PREFIX = "ogl_shader-"; auto now = std::time(nullptr); for (size_t i = 0; i < cache_files.size(); ++i) { auto& name = cache_files[i]; auto write_time = file_info[i].write_time; if (name.compare(0, PREFIX.size(), PREFIX) != 0) { // Not an OpenGL cache file continue; } auto diff = std::difftime(now, write_time); if (diff > TIMEOUT) { auto full_name = name + "." + ext; cf_delete(full_name.c_str(), CF_TYPE_CACHE); } } }
void fs2netd_update_ban_list() { int rc = 0; // don't bother with this if we aren't on FS2NetD if ( !Om_tracker_flag ) { return; } if ( !(Game_mode & GM_MULTIPLAYER) ) { return; } if (!Is_connected) { return; } // destroy the file prior to updating cf_delete( "banlist.cfg", CF_TYPE_DATA ); do_full_packet = 1; In_process = true; if (Is_standalone) { do { rc = fs2netd_update_ban_list_do(); } while (!rc); } else { rc = popup_till_condition(fs2netd_update_ban_list_do, XSTR("&Cancel", 779), XSTR("Requesting IP ban list", -1)); } In_process = false; if (FS2NetD_ban_list) { CFILE *banlist_cfg = cfopen("banlist.cfg", "wt", CFILE_NORMAL, CF_TYPE_DATA); if (banlist_cfg != NULL) { for (int i = 0; i < FS2NetD_ban_list_count; i++) { cfputs( FS2NetD_ban_list[i].ip_mask, banlist_cfg ); } cfclose(banlist_cfg); } delete[] FS2NetD_ban_list; } FS2NetD_ban_list = NULL; FS2NetD_ban_list_count = -1; }
int CFREDDoc::autoload() { char name[256], backup_name[256]; int i, r; FILE *fp; cf_create_default_path_string(name, sizeof(name) - 1, CF_TYPE_MISSIONS); strcat_s(name, MISSION_BACKUP_NAME); strcpy_s(backup_name, name); strcat_s(name, ".002"); // Check if Backup.002 exists fp = fopen(name, "r"); if (!fp) return 0; fclose(fp); if (Briefing_dialog) { // clean things up first Briefing_dialog->icon_select(-1); } // Load Backup.002 // editor_init_mission(); r = load_mission(name); Update_window = 1; // Delete Backup.001 auto len = strlen(backup_name); strcat_s(backup_name, ".001"); cf_delete(backup_name, CF_TYPE_MISSIONS); // Rename Backups. .002 becomes .001, .003 becomes .002, etc. for (i = 1; i < BACKUP_DEPTH; i++) { sprintf(backup_name + len, ".%.3d", i + 1); sprintf(name + len, ".%.3d", i); cf_rename(backup_name, name, CF_TYPE_MISSIONS); undo_desc[i] = undo_desc[i + 1]; } // Reduce the undo count and check if we can do another undo op. Undo_count--; check_undo(); return r; }
int CFREDDoc::autoload() { char name[256], backup_name[256]; int i, r, len; FILE *fp; strcpy(name, current_dir); strcat(name, MISSION_BACKUP_NAME); strcat(name, ".002"); //strcpy(name, MISSION_BACKUP_NAME); //strcat(name, ".002"); fp = fopen(name, "r"); if (!fp) return 0; fclose(fp); if (Briefing_dialog) Briefing_dialog->icon_select(-1); // clean things up first // editor_init_mission(); r = load_mission(name); Update_window = 1; strcpy(backup_name, current_dir); strcat(backup_name, MISSION_BACKUP_NAME); len = strlen(backup_name); strcat(backup_name, ".001"); cf_delete(backup_name, CF_TYPE_MISSIONS); for (i=1; i<BACKUP_DEPTH; i++) { sprintf(backup_name + len, ".%.3d", i + 1); sprintf(name + len, ".%.3d", i); cf_rename(backup_name, name, CF_TYPE_MISSIONS); undo_desc[i] = undo_desc[i + 1]; } Undo_count--; check_undo(); return r; }
// internal function to delete a player file. Called after a pilot is obsoleted, and when a pilot is deleted // used in barracks and player_select //returns 0 on failure, 1 on success int delete_pilot_file(char *pilot_name) { int delreturn; char filename[MAX_FILENAME_LEN]; char basename[MAX_FILENAME_LEN]; // get the player file. _splitpath(pilot_name, NULL, NULL, basename, NULL); strcpy_s( filename, basename ); strcat_s( filename, NOX(".plr") ); delreturn = cf_delete(filename, CF_TYPE_PLAYERS); // we must try and delete the campaign save files for a pilot as well. if (delreturn) { mission_campaign_delete_all_savefiles(basename); return 1; } else { return 0; } }
void fs2netd_update_ban_list() { int rc = 0; if ( !Logged_in ) { return; } // destroy the file prior to updating cf_delete( "banlist.cfg", CF_TYPE_DATA ); do_full_packet = true; In_process = true; if (Is_standalone) { do { rc = fs2netd_update_ban_list_do(); } while (!rc); } else { rc = popup_till_condition(fs2netd_update_ban_list_do, XSTR("&Cancel", 779), XSTR("Requesting IP ban list", 1587)); } In_process = false; Local_timeout = -1; if ( !FS2NetD_ban_list.empty() ) { CFILE *banlist_cfg = cfopen("banlist.cfg", "wt", CFILE_NORMAL, CF_TYPE_DATA); if (banlist_cfg != NULL) { for (SCP_vector<SCP_string>::iterator bl = FS2NetD_ban_list.begin(); bl != FS2NetD_ban_list.end(); ++bl) { cfputs( const_cast<char*>(bl->c_str()), banlist_cfg ); } cfclose(banlist_cfg); } } FS2NetD_ban_list.clear(); }
static void opengl_purge_shader_cache_type(const char* ext) { SCP_vector<SCP_string> cache_files; SCP_vector<file_list_info> file_info; SCP_string filter("*."); filter += ext; cf_get_file_list(cache_files, CF_TYPE_CACHE, filter.c_str(), false, &file_info); Assertion(cache_files.size() == file_info.size(), "cf_get_file_list returned different sizes for file names and file informations!"); const auto TIMEOUT = 2.0 * 30.0 * 24.0 * 60.0 * 60.0; // purge timeout in seconds which is ~2 months const SCP_string PREFIX = "ogl_shader-"; auto now = std::time(nullptr); for (size_t i = 0; i < cache_files.size(); ++i) { auto& name = cache_files[i]; auto write_time = file_info[i].write_time; if (name.compare(0, PREFIX.size(), PREFIX) != 0) { // Not an OpenGL cache file continue; } std::cout << std::put_time(localtime(&write_time), "%c %Z") << std::endl; auto diff = std::difftime(now, write_time); if (diff > TIMEOUT) { auto full_name = name + "." + ext; cf_delete(full_name.c_str(), CF_TYPE_CACHE); } } }