1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-04-21 02:37:44 +00:00

Promote validation.

This commit is contained in:
Thomas Harte 2025-01-17 17:01:09 -05:00
parent 9461e6f285
commit 7f5d290b66

View File

@ -22,28 +22,25 @@ Log::Logger<Log::Source::TZX> logger;
}
TZX::TZX(const std::string &file_name) : file_name_(file_name) {
format_serialiser();
Storage::FileHolder file(file_name, FileHolder::FileMode::Read);
// Check for signature followed by a 0x1a
if(!file.check_signature("ZXTape!")) throw ErrorNotTZX;
if(file.get8() != 0x1a) throw ErrorNotTZX;
// Get version number
const uint8_t major_version = file.get8();
const uint8_t minor_version = file.get8();
// Reject if an incompatible version
if(major_version != 1 || minor_version > 21) throw ErrorNotTZX;
}
std::unique_ptr<FormatSerialiser> TZX::format_serialiser() const {
return std::make_unique<Serialiser>(file_name_);
}
TZX::Serialiser::Serialiser(const std::string &file_name) :
file_(file_name, FileHolder::FileMode::Read),
current_level_(false) {
// Check for signature followed by a 0x1a
if(!file_.check_signature("ZXTape!")) throw ErrorNotTZX;
if(file_.get8() != 0x1a) throw ErrorNotTZX;
// Get version number
const uint8_t major_version = file_.get8();
const uint8_t minor_version = file_.get8();
// Reject if an incompatible version
if(major_version != 1 || minor_version > 21) throw ErrorNotTZX;
TZX::Serialiser::Serialiser(const std::string &file_name) : file_(file_name, FileHolder::FileMode::Read) {
reset();
}