mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-12 12:09:03 -04:00
Remove static linking support craq that hasn't been working/used since 1.0 cygwin builds.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7015 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
916b3e4005
commit
e2de2008a2
@ -13,13 +13,7 @@
|
||||
|
||||
#include "configreader.h"
|
||||
#include "dynamic.h"
|
||||
|
||||
#ifndef STATIC_LINK
|
||||
#include <dlfcn.h>
|
||||
#else
|
||||
#include "modlist.h"
|
||||
#endif
|
||||
|
||||
#include "inspircd.h"
|
||||
|
||||
DLLManager::DLLManager(InspIRCd* ServerInstance, const char *fname)
|
||||
@ -31,58 +25,24 @@ DLLManager::DLLManager(InspIRCd* ServerInstance, const char *fname)
|
||||
err = "This doesn't look like a module file to me...";
|
||||
return;
|
||||
}
|
||||
#ifdef STATIC_LINK
|
||||
this->staticname[0] = '\0';
|
||||
for (int j = 0; modsyms[j].name; j++)
|
||||
{
|
||||
if (!strcmp(modsyms[j].name,fname))
|
||||
{
|
||||
strlcpy(this->staticname,fname,1020);
|
||||
err = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
err = "Module is not statically compiled into the ircd";
|
||||
#else
|
||||
|
||||
h = dlopen(fname, RTLD_NOW|RTLD_LOCAL);
|
||||
if (!h)
|
||||
{
|
||||
err = (char*)dlerror();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
DLLManager::~DLLManager()
|
||||
{
|
||||
#ifndef STATIC_LINK
|
||||
// close the library if it isn't null
|
||||
if (h)
|
||||
dlclose(h);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef STATIC_LINK
|
||||
|
||||
bool DLLManager::GetSymbol(initfunc* &v, const char *sym_name)
|
||||
{
|
||||
for (int j = 0; modsyms[j].name; j++)
|
||||
{
|
||||
if (!strcmp(this->staticname,modsyms[j].name))
|
||||
{
|
||||
v = modsyms[j].value;
|
||||
err = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
err = "Module symbol missing from the core";
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
bool DLLManager::GetSymbol(void** v, const char* sym_name)
|
||||
{
|
||||
// try extract a symbol from the library
|
||||
@ -107,8 +67,6 @@ bool DLLManager::GetSymbol(void** v, const char* sym_name)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
DLLFactoryBase::DLLFactoryBase(InspIRCd* Instance, const char* fname, const char* symbol) : DLLManager(Instance, fname)
|
||||
{
|
||||
// try get the factory function if there is no error yet
|
||||
@ -116,11 +74,7 @@ DLLFactoryBase::DLLFactoryBase(InspIRCd* Instance, const char* fname, const char
|
||||
|
||||
if (!LastError())
|
||||
{
|
||||
#ifdef STATIC_LINK
|
||||
if (!GetSymbol( factory_func, symbol ? symbol : "init_module"))
|
||||
#else
|
||||
if (!GetSymbol( (void **)&factory_func, symbol ? symbol : "init_module"))
|
||||
#endif
|
||||
{
|
||||
throw ModuleException("Missing init_module() entrypoint!");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user