summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/crsm.cpp53
-rw-r--r--src/crsm.hpp1
2 files changed, 40 insertions, 14 deletions
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();