| 211 | } |
| 212 | |
| 213 | static std::tuple<SavegameType, std::string> DetermineOldSavegameTypeAndName(FileHandle &f) |
| 214 | { |
| 215 | long pos = ftell(f); |
| 216 | char buffer[std::max(TTO_HEADER_SIZE, TTD_HEADER_SIZE)]; |
| 217 | if (pos < 0 || fread(buffer, 1, lengthof(buffer), f) != lengthof(buffer)) { |
| 218 | return { SGT_INVALID, "(broken) Unable to read file" }; |
| 219 | } |
| 220 | |
| 221 | if (VerifyOldNameChecksum(buffer, TTO_HEADER_SIZE) && fseek(f, pos + TTO_HEADER_SIZE, SEEK_SET) == 0) { |
| 222 | return { SGT_TTO, "(TTO) " + StrMakeValid(std::string_view{buffer, TTO_HEADER_SIZE - HEADER_CHECKSUM_SIZE}) }; |
| 223 | } |
| 224 | |
| 225 | if (VerifyOldNameChecksum(buffer, TTD_HEADER_SIZE) && fseek(f, pos + TTD_HEADER_SIZE, SEEK_SET) == 0) { |
| 226 | return { SGT_TTD, "(TTD) " + StrMakeValid(std::string_view{buffer, TTD_HEADER_SIZE - HEADER_CHECKSUM_SIZE}) }; |
| 227 | } |
| 228 | |
| 229 | return { SGT_INVALID, "(broken) Unknown" }; |
| 230 | } |
| 231 | |
| 232 | typedef bool LoadOldMainProc(LoadgameState &ls); |
| 233 |
no test coverage detected