Merge pull request #3138 from PrismLauncher/backport-3130-to-release-9.x

[Backport release-9.x] Improve MANIFEST.MF parsing
This commit is contained in:
Alexandru Ionut Tripon 2024-11-25 12:09:01 +02:00 committed by GitHub
commit e0c323a190
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,6 +8,7 @@
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QJsonValue> #include <QJsonValue>
#include <QRegularExpression>
#include <QString> #include <QString>
#include "FileSystem.h" #include "FileSystem.h"
@ -15,6 +16,8 @@
#include "minecraft/mod/ModDetails.h" #include "minecraft/mod/ModDetails.h"
#include "settings/INIFile.h" #include "settings/INIFile.h"
static QRegularExpression newlineRegex("\r\n|\n|\r");
namespace ModUtils { namespace ModUtils {
// NEW format // NEW format
@ -487,11 +490,11 @@ bool processZIP(Mod& mod, [[maybe_unused]] ProcessingLevel level)
} }
// quick and dirty line-by-line parser // quick and dirty line-by-line parser
auto manifestLines = file.readAll().split('\n'); auto manifestLines = QString(file.readAll()).split(newlineRegex);
QString manifestVersion = ""; QString manifestVersion = "";
for (auto& line : manifestLines) { for (auto& line : manifestLines) {
if (QString(line).startsWith("Implementation-Version: ")) { if (line.startsWith("Implementation-Version: ", Qt::CaseInsensitive)) {
manifestVersion = QString(line).remove("Implementation-Version: "); manifestVersion = line.remove("Implementation-Version: ", Qt::CaseInsensitive);
break; break;
} }
} }