mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2026-02-16 10:40:46 +00:00
Support global keys in ini
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include <openssl/evp.h>
|
||||
#include <regex>
|
||||
#include <string>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -108,8 +109,8 @@ namespace Utils {
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
inline std::map<std::string, std::map<std::string, std::string>> ParseINI(const std::string& contents) {
|
||||
std::map<std::string, std::map<std::string, std::string>> ini;
|
||||
inline std::map<std::string, std::variant<std::map<std::string, std::string>, std::string>> ParseINI(const std::string& contents) {
|
||||
std::map<std::string, std::variant<std::map<std::string, std::string>, std::string>> ini;
|
||||
|
||||
std::string currentSection;
|
||||
auto sections = Split(contents, "\n");
|
||||
@@ -136,18 +137,19 @@ namespace Utils {
|
||||
if (line[0] == '[') {
|
||||
currentSection = line.substr(1, line.find(']') - 1);
|
||||
} else {
|
||||
|
||||
if (currentSection.empty()) {
|
||||
invalidLineLog();
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string key, value;
|
||||
size_t pos = line.find('=');
|
||||
if (pos != std::string::npos) {
|
||||
key = line.substr(0, pos);
|
||||
|
||||
key = key.substr(0, key.find_last_not_of(" \t") + 1);
|
||||
|
||||
value = line.substr(pos + 1);
|
||||
ini[currentSection][key] = value;
|
||||
if (currentSection.empty()) {
|
||||
ini[key] = value;
|
||||
} else {
|
||||
std::get<std::map<std::string, std::string>>(ini[currentSection])[key] = value;
|
||||
}
|
||||
} else {
|
||||
invalidLineLog();
|
||||
continue;
|
||||
@@ -157,7 +159,7 @@ namespace Utils {
|
||||
value.erase(0, value.find_first_not_of(" \t"));
|
||||
value.erase(value.find_last_not_of(" \t") + 1);
|
||||
|
||||
ini[currentSection][key] = value;
|
||||
std::get<std::map<std::string, std::string>>(ini[currentSection])[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user