Enable the DSO workaround on linux only AND in standalone.

This commit is contained in:
Player Dagostino
2011-08-11 02:12:28 +02:00
parent 258fe82db7
commit 4d2447d764
5 changed files with 23 additions and 7 deletions

View File

@@ -32,8 +32,10 @@
#if LL_DBUS_ENABLED
#ifdef LL_STANDALONE
#include <dlfcn.h>
#include <apr_portable.h>
#endif
#include "linden_common.h"
@@ -74,11 +76,17 @@ bool grab_dbus_syms(std::string dbus_dso_name)
//attempt to load the shared library
apr_pool_create(&sSymDBUSDSOMemoryPool, NULL);
#ifdef LL_STANDALONE
void *dso_handle = dlopen(dbus_dso_name.c_str(), RTLD_NOW | RTLD_GLOBAL);
rv = (!dso_handle)?APR_EDSOOPEN:apr_os_dso_handle_put(&sSymDBUSDSOHandle,
dso_handle, sSymDBUSDSOMemoryPool);
if ( APR_SUCCESS == rv )
#else
if ( APR_SUCCESS == (rv = apr_dso_load(&sSymDBUSDSOHandle,
dbus_dso_name.c_str(),
sSymDBUSDSOMemoryPool) ))
#endif
{
INFOMSG("Found DSO: %s", dbus_dso_name.c_str());