Blame src/cppunit/UnixDynamicLibraryManager.cpp
|
Packit |
8c9aa0 |
#include <cppunit/Portability.h>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#if defined(CPPUNIT_HAVE_UNIX_DLL_LOADER)
|
|
Packit |
8c9aa0 |
#include <cppunit/plugin/DynamicLibraryManager.h>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#include <dlfcn.h>
|
|
Packit |
8c9aa0 |
#include <unistd.h>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_BEGIN
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
DynamicLibraryManager::LibraryHandle
|
|
Packit |
8c9aa0 |
DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return ::dlopen( libraryName.c_str(), RTLD_NOW | RTLD_GLOBAL );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DynamicLibraryManager::doReleaseLibrary()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
::dlclose( m_libraryHandle);
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
DynamicLibraryManager::Symbol
|
|
Packit |
8c9aa0 |
DynamicLibraryManager::doFindSymbol( const std::string &symbol )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return ::dlsym ( m_libraryHandle, symbol.c_str() );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string
|
|
Packit |
8c9aa0 |
DynamicLibraryManager::getLastErrorDetail() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
const char* last_error = ::dlerror();
|
|
Packit |
8c9aa0 |
if(last_error)
|
|
Packit |
8c9aa0 |
return last_error;
|
|
Packit |
8c9aa0 |
else
|
|
Packit |
8c9aa0 |
return "";
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_END
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#endif // defined(CPPUNIT_HAVE_UNIX_DLL_LOADER)
|