From 98a99c3f6149a850b6b37b997709392df2b80e9f Mon Sep 17 00:00:00 2001 From: Hauke Moenck <hauke_moenck@gmx.de> Date: Mon, 29 Oct 2018 11:20:22 +0100 Subject: [PATCH] Added suffix filter to addToPluginList Also added Biotracker to the downstream --- .gitlab-ci.yml | 1 + SrcBehaviorLoader/PluginLoader.cpp | 14 +++++++++++--- SrcBehaviorLoader/PluginLoader.h | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f60472b..d94ee91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -74,3 +74,4 @@ trigger dependents: <<: *base_ubuntu_18_04 script: - curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://git.imp.fu-berlin.de/api/v4/projects/3654/trigger/pipeline + - curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://git.imp.fu-berlin.de/api/v4/projects/3464/trigger/pipeline diff --git a/SrcBehaviorLoader/PluginLoader.cpp b/SrcBehaviorLoader/PluginLoader.cpp index 0c75aad..7af1339 100644 --- a/SrcBehaviorLoader/PluginLoader.cpp +++ b/SrcBehaviorLoader/PluginLoader.cpp @@ -172,6 +172,10 @@ bool endsWith(std::string value, std::string ending) return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); } +bool validSuffix(std::string f, std::string suffix){ + return (endsWith(f,suffix+".dll") || endsWith(f,suffix+".so")); +} + std::vector<std::string> PluginLoader::searchDirectoriesForPlugins(std::vector<std::string> list, std::string suffix){ //Search directories std::vector<std::string> filesFromFolders; @@ -182,12 +186,12 @@ std::vector<std::string> PluginLoader::searchDirectoriesForPlugins(std::vector<s if (!file.empty() && file[file.size() - 1] == '/') { for (auto& p : std::filesystem::directory_iterator(file)) { std::string s = p.path().string(); - if(endsWith(s,suffix+".dll") || endsWith(s,suffix+".so")) + if(validSuffix(s, suffix)) filesFromFolders.push_back(s); } } else { - if(endsWith(f,suffix+".dll") || endsWith(f,suffix+".so")) + if(validSuffix(f, suffix)) filesFromFolders.push_back(f); } } @@ -247,7 +251,9 @@ bool PluginLoader::loadPluginFromName(QString name) { return loadPluginFromFilename(filename); } -void PluginLoader::addToPluginList(QString filename) { +int PluginLoader::addToPluginList(QString filename, QString suffix) { + if (!validSuffix(filename.toStdString(), suffix.toStdString())) + return 1; bool isLib = QLibrary::isLibrary(filename); @@ -264,8 +270,10 @@ void PluginLoader::addToPluginList(QString filename) { m_PluginMap.insert(std::pair<QString, QString>(mstring, filename)); } else { + return 2; qWarning() << "Error reading plugin: " << filename; } + return 0; } QStringListModel* PluginLoader::getPluginList() { diff --git a/SrcBehaviorLoader/PluginLoader.h b/SrcBehaviorLoader/PluginLoader.h index f0184fe..dc313ce 100644 --- a/SrcBehaviorLoader/PluginLoader.h +++ b/SrcBehaviorLoader/PluginLoader.h @@ -20,7 +20,7 @@ public: * It will then be added to the stringlist and is selectable via "loadPluginFromName". * This function does not actually set the plugin instance. */ - void addToPluginList(QString p); + int addToPluginList(QString filename, QString suffix); /** * Returns a QStrinListModel with the names of all seen Plugins. -- GitLab