void SaveLoad::flushStream(GameId id) { Common::OutSaveFile *save = openForSaving(id); if (!save) error("SaveLoad::flushStream: cannot open savegame (%s)!", getFilename(id).c_str()); if (!_savegame) error("SaveLoad::flushStream: savegame stream is invalid"); save->write(_savegame->getData(), (uint32)_savegame->size()); delete save; }
bool SaveFileManager::renameSavefile(const String &oldFilename, const String &newFilename) { InSaveFile *inFile = 0; OutSaveFile *outFile = 0; uint32 size = 0; void *buffer = 0; bool success = false; inFile = openForLoading(oldFilename); if (inFile) { size = inFile->size(); buffer = malloc(size); assert(buffer); outFile = openForSaving(newFilename); if (buffer && outFile) { inFile->read(buffer, size); bool error = inFile->err(); delete inFile; inFile = 0; if (!error) { outFile->write(buffer, size); outFile->finalize(); if (!outFile->err()) { success = removeSavefile(oldFilename); } } } free(buffer); delete outFile; delete inFile; } return success; }