summaryrefslogtreecommitdiff
path: root/libs/ardour/control_protocol_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-05-12 14:12:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-05-12 14:12:23 +0000
commit1d75f753d8dd4c4230b8d209c03d77e623ecc505 (patch)
tree85f58a5286c347d483365778a1cbf32c6cb2b5ad /libs/ardour/control_protocol_manager.cc
parentd914c4ec89271f4bae1ee471939e688dc6ae761f (diff)
don't load symlinks when trying to discover control protocol shared objects
git-svn-id: svn://localhost/ardour2/branches/3.0@12257 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/control_protocol_manager.cc')
-rw-r--r--libs/ardour/control_protocol_manager.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index cce9fe08a1..59001dce14 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -19,6 +19,8 @@
#include <dlfcn.h>
+#include <glibmm/fileutils.h>
+
#include "pbd/compose.h"
#include "pbd/file_utils.h"
#include "pbd/error.h"
@@ -202,10 +204,10 @@ ControlProtocolManager::discover_control_protocols ()
Glib::PatternSpec dylib_extension_pattern("*.dylib");
find_matching_files_in_search_path (control_protocol_search_path (),
- so_extension_pattern, cp_modules);
+ so_extension_pattern, cp_modules);
find_matching_files_in_search_path (control_protocol_search_path (),
- dylib_extension_pattern, cp_modules);
+ dylib_extension_pattern, cp_modules);
DEBUG_TRACE (DEBUG::ControlProtocols,
string_compose (_("looking for control protocols in %1"), control_protocol_search_path().to_string()));
@@ -220,6 +222,13 @@ ControlProtocolManager::control_protocol_discover (string path)
{
ControlProtocolDescriptor* descriptor;
+ /* don't load shared objects that are just symlinks to the real thing.
+ */
+
+ if (Glib::file_test (path, Glib::FILE_TEST_IS_SYMLINK)) {
+ return 0;
+ }
+
if ((descriptor = get_descriptor (path)) != 0) {
if (!descriptor->probe (descriptor)) {