std::vector<save_info> manager::get_saves_list(const std::string *dir, const std::string* filter) { // Don't use a reference, it seems to break on arklinux with GCC-4.3. std::string saves_dir = (dir) ? *dir : get_saves_dir(); #ifdef _WIN32 conv_ansi_utf8(saves_dir, false); #endif std::vector<std::string> saves; get_files_in_dir(saves_dir,&saves); std::vector<save_info> res; for(std::vector<std::string>::iterator i = saves.begin(); i != saves.end(); ++i) { if(filter && std::search(i->begin(), i->end(), filter->begin(), filter->end()) == i->end()) { continue; } const time_t modified = file_create_time(saves_dir + "/" + *i); // replace_underbar2space(*i); #ifdef _WIN32 res.push_back(save_info(conv_ansi_utf8_2(*i, true), modified)); #else res.push_back(save_info(*i, modified)); #endif } std::sort(res.begin(),res.end(),save_info_less_time()); return res; }
void savegame::finish_save_game(const config_writer &out) { std::string name = gamestate_.classification().label; replace_space2underbar(name); std::string fname(get_saves_dir() + "/" + name); try { if(!out.good()) { throw game::save_game_failed(_("Could not write to file")); } config& summary = save_index::save_summary(gamestate_.classification().label); extract_summary_data_from_save(summary); const int mod_time = static_cast<int>(file_create_time(fname)); summary["mod_time"] = str_cast(mod_time); save_index::write_save_index(); } catch(io_exception& e) { throw game::save_game_failed(e.what()); } }