From ed34963870de3c40faa3aad1da1d6dc56cabc093 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Sat, 18 Jun 2016 00:28:43 +0200 Subject: Fix case insensitivity in normal folders and make list case insensitive --- src/crsm.cpp | 53 +++++++++++++++++++++++++++++++++++++++-------------- src/crsm.hpp | 1 + 2 files changed, 40 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/crsm.cpp b/src/crsm.cpp index 8f0b13e..e89357d 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -837,6 +837,19 @@ void CRSM::cleanUp() out("\n"); } +QString CRSM::caseInsensitive(QString name, QString dir) +{ + const QStringList& entryList = QDir(Config.Auto.Volatile.Clonk.Directory + dir + QDir::separator()).entryList(); + foreach(const QString& entry, entryList) + { + if(entry.compare(name, Qt::CaseInsensitive) == 0) + { + return entry; + } + } + return QString(); +} + QString CRSM::scenPath(QString scenName) { bool isAlias = false; @@ -874,18 +887,29 @@ QString CRSM::scenPath(QString scenName) QString name = scenName.mid(split.first().length() + 1); if(split.length() >= 2) { - if(split.first().endsWith(".c4f")) + QString folderName = caseInsensitive(split.first()); + if(!folderName.isEmpty()) { - const QStringList& entryList = QDir(Config.Auto.Volatile.Clonk.Directory).entryList(QStringList() << "*.c4f"); - QString folderName = split.first(); - foreach(const QString& entry, entryList) - { - if(entry.compare(folderName, Qt::CaseInsensitive) == 0) - { - folderName = entry; - break; - } - } +// QDir dir(Config.Auto.Volatile.Clonk.Directory + folderName); +// if(dir.exists()) +// { +// QString file = caseInsensitive(name, folderName); +// if(!file.isEmpty()) +// { +// if(isAlias) +// { +// return aliasName; +// } +// else +// { +// return folderName + '/' + file; +// } +// } +// else +// { +// return QString(); +// } +// } QFile lstFile(Config.CRSM.ListFolder + folderName + ".lst"); if(lstFile.exists()) { @@ -944,10 +968,11 @@ QString CRSM::listScenarios(QString commandArgs) } else { - QFile file(Config.CRSM.ListFolder + commandArgs + ".lst"); - if(file.exists() && !Config.Clonk.Server.IgnoreFolders.contains(QFileInfo(file).completeBaseName())) + QString folder = caseInsensitive(commandArgs); + QFile file(Config.CRSM.ListFolder + folder + ".lst"); + if(!folder.isEmpty() && file.exists() && !Config.Clonk.Server.IgnoreFolders.contains(QFileInfo(file).completeBaseName())) { - ret += "Der Ordner \"" + commandArgs + QString("\" enthält folgende Szenarien:\n"); + ret += "Der Ordner \"" + folder + QString("\" enthält folgende Szenarien:\n"); file.open(QFile::ReadOnly); while(!file.atEnd()) ret += " " + QString::fromUtf8(file.readLine()).trimmed() + "\n"; diff --git a/src/crsm.hpp b/src/crsm.hpp index 6cc03ff..f957054 100644 --- a/src/crsm.hpp +++ b/src/crsm.hpp @@ -250,6 +250,7 @@ private: void readScenarios(); void listC4Folders(); void cleanUp(); + QString caseInsensitive(QString name, QString dir = ""); QString scenPath(QString scenName); QString listScenarios(QString commandArgs); QString printQueue(); -- cgit v1.2.3-54-g00ecf