Update serialization

This commit is contained in:
Konstantin Vukolov 2026-01-22 23:03:25 +03:00
parent efdcdb88fa
commit bb21667771
2 changed files with 14 additions and 13 deletions

View File

@ -47,6 +47,17 @@ static void readString(FsFile& file, std::string& s) {
uint32_t len; uint32_t len;
readPod(file, len); readPod(file, len);
s.resize(len); s.resize(len);
file.read(&s[0], len); file.read(s.data(), len);
}
static void readString(FsFile& file, char* s, size_t buf_size) {
uint32_t len;
readPod(file, len);
auto lenToRead = std::min(buf_size - 1, len);
file.read(s, lenToRead);
s[lenToRead] = '\0';
if (lenToRead < len) {
file.seek(len - lenToRead);
}
} }
} // namespace serialization } // namespace serialization

View File

@ -106,12 +106,7 @@ bool CrossPointSettings::loadFromFile() {
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
serialization::readPod(inputFile, sleepScreenCoverMode); serialization::readPod(inputFile, sleepScreenCoverMode);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
{ serialization::readString(inputFile, opdsServerUrl, sizeof(opdsServerUrl));
std::string urlStr;
serialization::readString(inputFile, urlStr);
strncpy(opdsServerUrl, urlStr.c_str(), sizeof(opdsServerUrl) - 1);
opdsServerUrl[sizeof(opdsServerUrl) - 1] = '\0';
}
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
serialization::readPod(inputFile, textAntiAliasing); serialization::readPod(inputFile, textAntiAliasing);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
@ -121,12 +116,7 @@ bool CrossPointSettings::loadFromFile() {
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
serialization::readPod(inputFile, hyphenationEnabled); serialization::readPod(inputFile, hyphenationEnabled);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
{ serialization::readString(inputFile, opdsPath, sizeof(opdsPath));
std::string urlPath;
serialization::readString(inputFile, urlPath);
strncpy(opdsPath, urlPath.c_str(), sizeof(opdsPath) - 1);
opdsPath[sizeof(opdsPath) - 1] = '\0';
}
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
} while (false); } while (false);