getFileVersion(): use only 16 byte of buffer filled by DC with version-info

of JSON-file.
This commit is contained in:
Gerhard Hoffmann 2024-05-08 16:16:13 +02:00
parent f8472a3b87
commit 2e3af64c02

View File

@ -592,23 +592,31 @@ QStringList Update::getDcSoftAndHardWareVersion() {
QString Update::getFileVersion(QString const& jsonFileName) { QString Update::getFileVersion(QString const& jsonFileName) {
// "version":"15.10.2023 14:55 02.00.06", // "version":"15.10.2023 14:55 02.00.06",
static const QRegularExpression re("^.*(\\\"version\\\":)(.*)$"); static const QRegularExpression re("^.*(\\\"[Vv]ersion\\\":)([\\s\\\"]{0,})([^,\\\"]{0,}).*$");
QString fileVersion; QString fileVersion("");
QFile inputFile(jsonFileName); QFile inputFile(QDir::cleanPath(m_customerRepository + QDir::separator() + jsonFileName));
if (inputFile.open(QIODevice::ReadOnly)) {
QTextStream in(&inputFile);
while (!in.atEnd()) {
QString line = in.readLine();
QRegularExpressionMatch match; if (inputFile.exists()) {
int idx = line.indexOf(re, 0, &match); if (inputFile.open(QIODevice::ReadOnly)) {
if (idx != -1) { QTextStream in(&inputFile);
fileVersion = match.captured(match.lastCapturedIndex()); while (!in.atEnd()) {
break; QString line = in.readLine();
}
} QRegularExpressionMatch match;
inputFile.close(); int idx = line.indexOf(re, 0, &match);
if (idx != -1) {
int const lastCaptured = match.lastCapturedIndex();
// the dc only sends 16 Byte
fileVersion = match.captured(lastCaptured);
fileVersion.truncate(16);
break;
}
}
inputFile.close();
}
} else {
// qCritical() << "ERROR" << inputFile.fileName() << "does not exist";
} }
return fileVersion; return fileVersion;