diff options
author | Sefa Eyeoglu <contact@scrumplex.net> | 2023-07-30 09:47:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-30 09:47:40 +0200 |
commit | 566425166b343c3c4ffd8eaa3ca54167de1d3d14 (patch) | |
tree | 613fd04cdc9c3b626b74513da45e09d31cc5bff0 | |
parent | bdec11c501a6438706f62465d89f2344f7856342 (diff) | |
parent | 1e82cb6a7c9c7e8d0a9bfa3d2505b4b8eb132944 (diff) | |
download | PrismLauncher-566425166b343c3c4ffd8eaa3ca54167de1d3d14.tar.gz PrismLauncher-566425166b343c3c4ffd8eaa3ca54167de1d3d14.tar.bz2 PrismLauncher-566425166b343c3c4ffd8eaa3ca54167de1d3d14.zip |
Merge pull request #1449 from Trial97/tehnic
Reintroduce parsing of INI files
-rw-r--r-- | launcher/minecraft/mod/tasks/LocalModParseTask.cpp | 9 | ||||
-rw-r--r-- | launcher/settings/INIFile.cpp | 21 | ||||
-rw-r--r-- | launcher/settings/INIFile.h | 1 |
3 files changed, 23 insertions, 8 deletions
diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 264019f8..60389753 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -1,9 +1,9 @@ #include "LocalModParseTask.h" +#include <qdcss.h> #include <quazip/quazip.h> #include <quazip/quazipfile.h> #include <toml++/toml.h> -#include <qdcss.h> #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> @@ -369,12 +369,11 @@ ModDetails ReadQuiltModInfo(QByteArray contents) details.icon_file = icon.toString(); } } - } return details; } -ModDetails ReadForgeInfo(QString fileName) +ModDetails ReadForgeInfo(QByteArray contents) { ModDetails details; // Read the data @@ -382,7 +381,7 @@ ModDetails ReadForgeInfo(QString fileName) details.mod_id = "Forge"; details.homeurl = "http://www.minecraftforge.net/forum/"; INIFile ini; - if (!ini.loadFile(fileName)) + if (!ini.loadFile(contents)) return details; QString major = ini.get("forge.major.number", "0").toString(); @@ -554,7 +553,7 @@ bool processZIP(Mod& mod, ProcessingLevel level) return false; } - details = ReadForgeInfo(file.getFileName()); + details = ReadForgeInfo(file.readAll()); file.close(); zip.close(); diff --git a/launcher/settings/INIFile.cpp b/launcher/settings/INIFile.cpp index d16256b9..4fb11ed3 100644 --- a/launcher/settings/INIFile.cpp +++ b/launcher/settings/INIFile.cpp @@ -37,11 +37,12 @@ #include "settings/INIFile.h" #include <FileSystem.h> +#include <QDebug> #include <QFile> -#include <QTextStream> -#include <QStringList> #include <QSaveFile> -#include <QDebug> +#include <QStringList> +#include <QTemporaryFile> +#include <QTextStream> #include <QSettings> @@ -71,6 +72,7 @@ bool INIFile::saveFile(QString fileName) return true; } + QString unescape(QString orig) { QString out; @@ -185,6 +187,19 @@ bool INIFile::loadFile(QString fileName) return true; } +bool INIFile::loadFile(QByteArray data) +{ + QTemporaryFile file; + if (!file.open()) + return false; + file.write(data); + file.flush(); + file.close(); + auto loaded = loadFile(file.fileName()); + file.remove(); + return loaded; +} + QVariant INIFile::get(QString key, QVariant def) const { if (!this->contains(key)) diff --git a/launcher/settings/INIFile.h b/launcher/settings/INIFile.h index 0d5c05eb..4ee543cf 100644 --- a/launcher/settings/INIFile.h +++ b/launcher/settings/INIFile.h @@ -50,6 +50,7 @@ public: explicit INIFile(); bool loadFile(QString fileName); + bool loadFile(QByteArray data); bool saveFile(QString fileName); QVariant get(QString key, QVariant def) const; |