LayerManagerBase: fixed portability issue in plugin loading 1_0_rc2
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Mon, 18 Mar 2013 13:31:55 +0000 (14:31 +0100)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Tue, 19 Mar 2013 11:03:03 +0000 (12:03 +0100)
on some platforms the type of directy entries always returns DT_UNKNOWN,
this makes it impossible to make a distinction between files and directories.
The plugin searching routing was updated to not rely on the directory
entry type information, it just tries to load each entry found.

Signed-off-by: Timo Lotterbach <timo.lotterbach@bmw-carit.de>
LayerManagerBase/src/PluginManager.cpp

index 198dead..929497d 100644 (file)
@@ -177,7 +177,6 @@ void PluginManager::getAllFilesInPluginPath(std::string path)
 
     while (directory && (itemInDirectory = readdir(directory)))
     {
-        unsigned char entryType = itemInDirectory->d_type;
         std::string entryName = itemInDirectory->d_name;
         std::string fullPath = path + "/" + entryName;
 
@@ -186,23 +185,9 @@ void PluginManager::getAllFilesInPluginPath(std::string path)
             continue;
         }
 
-        switch (entryType)
-        {
-        case DT_REG:
-        case DT_LNK:
-        case DT_UNKNOWN:
-            mFileList.push_back(fullPath);
-            LOG_DEBUG("PluginManager", "considering File " << fullPath);
-            break;
-
-        case DT_DIR:
-            getAllFilesInPluginPath(fullPath);
-            break;
-
-        default:
-            LOG_DEBUG("PluginManager", "ignored file " << fullPath);
-            break;
-        }
+        mFileList.push_back(fullPath);
+        LOG_DEBUG("PluginManager", "considering " << fullPath);
+        getAllFilesInPluginPath(fullPath);
     }
 
     closedir(directory);
@@ -234,7 +219,6 @@ IPlugin* PluginManager::createDynamicallyLinkedPlugin(std::string path)
     const char* dlopen_error = dlerror();
     if (dlopen_error)
     {
-        LOG_DEBUG("PluginManager", "not a shared library: " << dlopen_error);
         return NULL;
     }