summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2015-09-23 18:11:08 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2015-09-23 18:11:08 +0200
commitd21b8fe598eb98cf3ecac784a4d8be31828408a1 (patch)
tree01262b8f5db9ba6ad82d56da9e9abeac929150dc
parent320f479da036b14a4127c04d27cadd63cf4e1bf9 (diff)
downloadmanager-d21b8fe598eb98cf3ecac784a4d8be31828408a1.tar.gz
manager-d21b8fe598eb98cf3ecac784a4d8be31828408a1.zip
Store folder lists (.lst-Files) in CRSM.ListFolder
-rw-r--r--src/CRSMConfig.hpp2
-rw-r--r--src/crsm.cpp27
2 files changed, 22 insertions, 7 deletions
diff --git a/src/CRSMConfig.hpp b/src/CRSMConfig.hpp
index 2d0c2e4..7c3ccf1 100644
--- a/src/CRSMConfig.hpp
+++ b/src/CRSMConfig.hpp
@@ -197,6 +197,7 @@ class CRSMConfig
public:
struct {
Integer ManagementPort = 9372;
+ String ListFolder = "ScenarioLists";
} CRSM;
struct {
@@ -288,6 +289,7 @@ private:
#define ConfigValue(Value) {#Value, mkConfigValue(Value)}
QMap<QString, CRSMConfigValueBase*> configValues {
ConfigValue(CRSM.ManagementPort),
+ ConfigValue(CRSM.ListFolder),
diff --git a/src/crsm.cpp b/src/crsm.cpp
index d54ce2c..3e3ca1e 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -627,6 +627,7 @@ void CRSM::managementConnectionDisconnected()
void CRSM::updateNextAutoScens()
{
+ if(autolist.length() <= 0) return;
while(nextAutoScens.length() < Config.Hosting.UserListLength)
{
ScenarioSettings next("");
@@ -694,6 +695,18 @@ void CRSM::readConfig()
args << "/config:" + Config.Clonk.Server.Config;
Config.Auto.Volatile.Clonk.Directory = QFileInfo(Config.Clonk.Server.Executable).absoluteDir().absolutePath() + QDir::separator();
+ Config.CRSM.ListFolder = QDir(Config.CRSM.ListFolder).absolutePath() + QDir::separator();
+
+ if(!QDir(Config.CRSM.ListFolder).exists())
+ {
+ if(!QDir().mkpath(Config.CRSM.ListFolder))
+ {
+ out("ERROR: Could not create the CRSM.ListFolder: " + Config.CRSM.ListFolder + "\n");
+ ok = false;
+ exit();
+ }
+ }
+
QFile clonkConfig(Config.Clonk.Server.Config);
if(!clonkConfig.exists())
{
@@ -790,12 +803,12 @@ void CRSM::listC4Folders()
{
if(it.fileName() == ".." || it.fileName() == ".")
continue;
- if((it.fileInfo().suffix() == "c4f" || (it.fileInfo().isDir() && !QDir(it.fileInfo().absoluteFilePath()).entryList(QStringList() << "*.c4f" << "*.c4s").isEmpty())) && it.fileName() != "." && it.fileName() != ".." && Config.Clonk.Server.IgnoreFolders.contains(it.fileInfo().baseName()))
+ if((it.fileInfo().suffix() == "c4f" || (it.fileInfo().isDir() && !QDir(it.fileInfo().absoluteFilePath()).entryList(QStringList() << "*.c4f" << "*.c4s").isEmpty())) && it.fileName() != "." && it.fileName() != ".." && !Config.Clonk.Server.IgnoreFolders.contains(it.fileInfo().baseName()))
{
const QStringList& list = listC4Folder(it.filePath());
if(!list.isEmpty())
{
- QFile listFile(it.filePath()+".lst");
+ QFile listFile(Config.CRSM.ListFolder + it.fileName() + ".lst");
listFile.open(QFile::WriteOnly);
foreach(const QString& scen, list)
{
@@ -866,7 +879,7 @@ QString CRSM::scenPath(QString scenName)
break;
}
}
- QFile lstFile(Config.Auto.Volatile.Clonk.Directory + folderName + ".lst");
+ QFile lstFile(Config.CRSM.ListFolder + folderName + ".lst");
if(lstFile.exists())
{
lstFile.open(QFile::ReadOnly);
@@ -907,11 +920,11 @@ QString CRSM::listScenarios(QString commandArgs)
ret += QString(" "+it.fileInfo().absoluteFilePath().replace(Config.Auto.Volatile.Clonk.Directory,"")+"\n");
}
ret += "-----------------------------------------------------------------\nFolgende Ordner stehen zur Auswahl:\n";
- QDirIterator folderIt(Config.Auto.Volatile.Clonk.Directory, QDirIterator::FollowSymlinks);
+ QDirIterator folderIt(Config.CRSM.ListFolder, QDirIterator::FollowSymlinks);
for(; folderIt.hasNext(); folderIt.next())
{
- if(folderIt.fileInfo().suffix() == "lst" && !folderIt.fileInfo().absoluteFilePath().contains(Config.Auto.Volatile.Clonk.Directory+"Network/") && !Config.Clonk.Server.IgnoreFolders.contains(folderIt.fileInfo().baseName()))
- ret += QString(" "+folderIt.fileInfo().absoluteFilePath().left(folderIt.fileInfo().absoluteFilePath().length() - 4).replace(Config.Auto.Volatile.Clonk.Directory,"")+"\n");
+ if(folderIt.fileInfo().suffix() == "lst" && !Config.Clonk.Server.IgnoreFolders.contains(folderIt.fileInfo().baseName()))
+ ret += " " + folderIt.fileInfo().completeBaseName() + "\n";
}
}
else if(commandArgs.toLower() == "aliase")
@@ -924,7 +937,7 @@ QString CRSM::listScenarios(QString commandArgs)
}
else
{
- QFile file(Config.Auto.Volatile.Clonk.Directory + commandArgs + ".lst");
+ QFile file(Config.CRSM.ListFolder + commandArgs + ".lst");
if(file.exists())
{
ret += "Der Ordner \"" + commandArgs + QString("\" enthält folgende Szenarien:\n");