diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-05-01 12:52:10 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-05-01 12:52:10 -0500 |
| commit | 1f198921b2c1f23f132d25552cacb650af253d15 (patch) | |
| tree | 90833b0b7c70486a33f68352a99a6b682a0f15d2 /src | |
| parent | 95b1cb12c3f5604c865603e951646098f7cd593b (diff) | |
meta.ini: lowercase code keys to match normalize, kill dup writes
normalizeMetaIniCase folds keys to lowercase, but readMeta/saveMeta and
the install paths still used CamelCase ("installationFile", "gameName",
"nexusDescription", etc.). Qt6 IniFormat is case-sensitive on Linux, so
setValue under CamelCase wrote a NEW key alongside the lowercase entry
left by normalize, and value() reads with CamelCase missed the lowercase
key and fell back to defaults — saveMeta then persisted those defaults
under CamelCase. Net effect: every save grew meta.ini by ~12 duplicate
lines (e.g. installationFile= + installationfile=<real value>;
gameName=SkyrimSE + gamename=Skyrim).
Lowercased all per-mod meta.ini key names in modinforegular.cpp,
installationmanager.cpp, and organizercore.cpp. Section/group names
(installedFiles, Plugins, INI Tweaks) stay CamelCase because normalize
preserves section headers verbatim.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/src/installationmanager.cpp | 12 | ||||
| -rw-r--r-- | src/src/modinforegular.cpp | 52 | ||||
| -rw-r--r-- | src/src/organizercore.cpp | 4 |
3 files changed, 34 insertions, 34 deletions
diff --git a/src/src/installationmanager.cpp b/src/src/installationmanager.cpp index 3e58a2a..09e2a36 100644 --- a/src/src/installationmanager.cpp +++ b/src/src/installationmanager.cpp @@ -549,8 +549,8 @@ InstallationResult InstallationManager::doInstall(GuessedValue<QString>& modName // overwrite settings only if they are actually are available or haven't been set // before - if ((gameName != "") || !settingsFile.contains("gameName")) { - settingsFile.setValue("gameName", gameName); + if ((gameName != "") || !settingsFile.contains("gamename")) { + settingsFile.setValue("gamename", gameName); } if ((modID != 0) || !settingsFile.contains("modid")) { settingsFile.setValue("modid", modID); @@ -561,15 +561,15 @@ InstallationResult InstallationManager::doInstall(GuessedValue<QString>& modName VersionInfo(settingsFile.value("version").toString()))))) { settingsFile.setValue("version", version); } - if (!newestVersion.isEmpty() || !settingsFile.contains("newestVersion")) { - settingsFile.setValue("newestVersion", newestVersion); + if (!newestVersion.isEmpty() || !settingsFile.contains("newestversion")) { + settingsFile.setValue("newestversion", newestVersion); } // issue #51 used to overwrite the manually set categories if (!settingsFile.contains("category")) { settingsFile.setValue("category", QString::number(categoryID)); } - settingsFile.setValue("nexusFileStatus", fileCategoryID); - settingsFile.setValue("installationFile", storeMetaPath(m_CurrentFile)); + settingsFile.setValue("nexusfilestatus", fileCategoryID); + settingsFile.setValue("installationfile", storeMetaPath(m_CurrentFile)); settingsFile.setValue("repository", repository); if (!merge) { diff --git a/src/src/modinforegular.cpp b/src/src/modinforegular.cpp index c59706d..3978f2e 100644 --- a/src/src/modinforegular.cpp +++ b/src/src/modinforegular.cpp @@ -113,21 +113,21 @@ void ModInfoRegular::readMeta() QSettings metaFile(metaPath, QSettings::IniFormat); m_Comments = metaFile.value("comments", "").toString(); m_Notes = metaFile.value("notes", "").toString(); - QString const tempGameName = metaFile.value("gameName", m_GameName).toString(); + QString const tempGameName = metaFile.value("gamename", m_GameName).toString(); if (tempGameName.size()) m_GameName = tempGameName; m_NexusID = metaFile.value("modid", -1).toInt(); m_Version.parse(metaFile.value("version", "").toString()); - m_NewestVersion = metaFile.value("newestVersion", "").toString(); - m_IgnoredVersion = metaFile.value("ignoredVersion", "").toString(); + m_NewestVersion = metaFile.value("newestversion", "").toString(); + m_IgnoredVersion = metaFile.value("ignoredversion", "").toString(); m_InstallationFile = - loadMetaPath(metaFile.value("installationFile", "").toString()); - m_NexusDescription = metaFile.value("nexusDescription", "").toString(); - m_NexusFileStatus = metaFile.value("nexusFileStatus", "1").toInt(); - m_NexusCategory = metaFile.value("nexusCategory", 0).toInt(); + loadMetaPath(metaFile.value("installationfile", "").toString()); + m_NexusDescription = metaFile.value("nexusdescription", "").toString(); + m_NexusFileStatus = metaFile.value("nexusfilestatus", "1").toInt(); + m_NexusCategory = metaFile.value("nexuscategory", 0).toInt(); m_Author = metaFile.value("author", "").toString(); m_Uploader = metaFile.value("uploader", "").toString(); - m_UploaderUrl = metaFile.value("uploaderUrl", "").toString(); + m_UploaderUrl = metaFile.value("uploaderurl", "").toString(); m_Repository = metaFile.value("repository", "Nexus").toString(); m_Converted = metaFile.value("converted", false).toBool(); m_Validated = metaFile.value("validated", false).toBool(); @@ -181,8 +181,8 @@ void ModInfoRegular::readMeta() // always read the url m_CustomURL = metaFile.value("url").toString(); - if (metaFile.contains("hasCustomURL")) { - m_HasCustomURL = metaFile.value("hasCustomURL").toBool(); + if (metaFile.contains("hascustomurl")) { + m_HasCustomURL = metaFile.value("hascustomurl").toBool(); } else { if (m_NexusID > 0) { // the mod id is valid, disable the custom url @@ -196,13 +196,13 @@ void ModInfoRegular::readMeta() } m_LastNexusQuery = QDateTime::fromString( - metaFile.value("lastNexusQuery", "").toString(), Qt::ISODate); + metaFile.value("lastnexusquery", "").toString(), Qt::ISODate); m_LastNexusUpdate = QDateTime::fromString( - metaFile.value("lastNexusUpdate", "").toString(), Qt::ISODate); + metaFile.value("lastnexusupdate", "").toString(), Qt::ISODate); m_NexusLastModified = QDateTime::fromString( - metaFile.value("nexusLastModified", QDateTime::currentDateTimeUtc()).toString(), + metaFile.value("nexuslastmodified", QDateTime::currentDateTimeUtc()).toString(), Qt::ISODate); - m_NexusCategory = metaFile.value("nexusCategory", 0).toInt(); + m_NexusCategory = metaFile.value("nexuscategory", 0).toInt(); m_Color = metaFile.value("color", QColor()).value<QColor>(); m_TrackedState = metaFile.value("tracked", false).toBool() ? TrackedState::TRACKED_TRUE @@ -285,26 +285,26 @@ void ModInfoRegular::saveMeta() temp.erase(m_PrimaryCategory); metaFile.setValue("category", QString("%1").arg(m_PrimaryCategory) + "," + SetJoin(temp, ",")); - metaFile.setValue("newestVersion", m_NewestVersion.canonicalString()); - metaFile.setValue("ignoredVersion", m_IgnoredVersion.canonicalString()); + metaFile.setValue("newestversion", m_NewestVersion.canonicalString()); + metaFile.setValue("ignoredversion", m_IgnoredVersion.canonicalString()); metaFile.setValue("version", m_Version.canonicalString()); - metaFile.setValue("installationFile", storeMetaPath(m_InstallationFile)); + metaFile.setValue("installationfile", storeMetaPath(m_InstallationFile)); metaFile.setValue("repository", m_Repository); - metaFile.setValue("gameName", m_GameName); + metaFile.setValue("gamename", m_GameName); metaFile.setValue("modid", m_NexusID); metaFile.setValue("comments", m_Comments); metaFile.setValue("notes", m_Notes); - metaFile.setValue("nexusDescription", m_NexusDescription); + metaFile.setValue("nexusdescription", m_NexusDescription); metaFile.setValue("url", m_CustomURL); - metaFile.setValue("hasCustomURL", m_HasCustomURL); - metaFile.setValue("nexusFileStatus", m_NexusFileStatus); - metaFile.setValue("lastNexusQuery", m_LastNexusQuery.toString(Qt::ISODate)); - metaFile.setValue("lastNexusUpdate", m_LastNexusUpdate.toString(Qt::ISODate)); - metaFile.setValue("nexusLastModified", m_NexusLastModified.toString(Qt::ISODate)); - metaFile.setValue("nexusCategory", m_NexusCategory); + metaFile.setValue("hascustomurl", m_HasCustomURL); + metaFile.setValue("nexusfilestatus", m_NexusFileStatus); + metaFile.setValue("lastnexusquery", m_LastNexusQuery.toString(Qt::ISODate)); + metaFile.setValue("lastnexusupdate", m_LastNexusUpdate.toString(Qt::ISODate)); + metaFile.setValue("nexuslastmodified", m_NexusLastModified.toString(Qt::ISODate)); + metaFile.setValue("nexuscategory", m_NexusCategory); metaFile.setValue("author", m_Author); metaFile.setValue("uploader", m_Uploader); - metaFile.setValue("uploaderUrl", m_UploaderUrl); + metaFile.setValue("uploaderurl", m_UploaderUrl); metaFile.setValue("converted", m_Converted); metaFile.setValue("validated", m_Validated); metaFile.setValue("color", m_Color); diff --git a/src/src/organizercore.cpp b/src/src/organizercore.cpp index 8b3171e..bc28969 100644 --- a/src/src/organizercore.cpp +++ b/src/src/organizercore.cpp @@ -964,9 +964,9 @@ MOBase::IModInterface* OrganizerCore::createMod(GuessedValue<QString>& name) if (!result.merged()) { settingsFile.setValue("modid", 0); settingsFile.setValue("version", ""); - settingsFile.setValue("newestVersion", ""); + settingsFile.setValue("newestversion", ""); settingsFile.setValue("category", 0); - settingsFile.setValue("installationFile", ""); + settingsFile.setValue("installationfile", ""); settingsFile.remove("installedFiles"); settingsFile.beginWriteArray("installedFiles", 0); |
