MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / DetermineOldSavegameTypeAndName

Function DetermineOldSavegameTypeAndName

src/saveload/oldloader.cpp:213–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

211}
212
213static 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
232typedef bool LoadOldMainProc(LoadgameState &ls);
233

Callers 2

LoadOldSaveGameFunction · 0.85
GetOldSaveGameNameFunction · 0.85

Calls 2

VerifyOldNameChecksumFunction · 0.85
StrMakeValidFunction · 0.50

Tested by

no test coverage detected