summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/Modules.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2009-11-04 19:33:56 +0000
committerAlan Conway <aconway@apache.org>2009-11-04 19:33:56 +0000
commit135d2e7f45d132a1e471066043ca52a55841a643 (patch)
tree04c6c0d9780d38714daef68e413e32dc6129a682 /qpid/cpp/src/qpid/Modules.cpp
parent633a7771d60077daca4362ab41b0eca659bc4ef4 (diff)
downloadqpid-python-135d2e7f45d132a1e471066043ca52a55841a643.tar.gz
Automatically add shared library suffix to module name in --load-module.
Allows the suffix to be omitted in qpidd.conf or qpidd options so they are portable. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@832853 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qpid/Modules.cpp')
-rw-r--r--qpid/cpp/src/qpid/Modules.cpp29
1 files changed, 19 insertions, 10 deletions
diff --git a/qpid/cpp/src/qpid/Modules.cpp b/qpid/cpp/src/qpid/Modules.cpp
index 7230630818..70549bd553 100644
--- a/qpid/cpp/src/qpid/Modules.cpp
+++ b/qpid/cpp/src/qpid/Modules.cpp
@@ -30,6 +30,21 @@
namespace fs=boost::filesystem;
+namespace {
+
+// CMake sets QPID_MODULE_SUFFIX; Autoconf doesn't, so assume Linux .so
+#if defined (QPID_MODULE_SUFFIX)
+ std::string suffix(QPID_MODULE_SUFFIX);
+#else
+ std::string suffix(".so");
+#endif
+
+bool isShlibName(const std::string& name) {
+ return name.find (suffix) == name.length() - suffix.length();
+}
+
+}
+
namespace qpid {
ModuleOptions::ModuleOptions(const std::string& defaultModuleDir)
@@ -41,7 +56,9 @@ ModuleOptions::ModuleOptions(const std::string& defaultModuleDir)
("no-module-dir", optValue(noLoad), "Don't load modules from module directory");
}
-void tryShlib(const char* libname, bool noThrow) {
+void tryShlib(const char* libname_, bool noThrow) {
+ std::string libname(libname_);
+ if (!isShlibName(libname)) libname += suffix;
try {
sys::Shlib shlib(libname);
QPID_LOG (info, "Loaded Module: " << libname);
@@ -68,17 +85,9 @@ void loadModuleDir (std::string dirname, bool isDefault)
}
fs::directory_iterator endItr;
- // CMake sets QPID_MODULE_SUFFIX; Autoconf doesn't, so assume Linux .so
-#if defined (QPID_MODULE_SUFFIX)
- std::string suffix(QPID_MODULE_SUFFIX);
-#else
- std::string suffix(".so");
-#endif
for (fs::directory_iterator itr (dirPath); itr != endItr; ++itr)
{
- if (!fs::is_directory(*itr) &&
- itr->string().find (suffix) ==
- itr->string().length() - suffix.length())
+ if (!fs::is_directory(*itr) && isShlibName(itr->string()))
tryShlib (itr->string().data(), true);
}
}