mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
Make error messages on failure to load command more useful
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8194 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
71532e29af
commit
45776df702
@ -59,9 +59,10 @@ class CoreExport CommandParser : public classbase
|
|||||||
/** Finds the init_command symbol in a .so file
|
/** Finds the init_command symbol in a .so file
|
||||||
* @param v A function pointer to be initialized
|
* @param v A function pointer to be initialized
|
||||||
* @param h A valid shared object handle
|
* @param h A valid shared object handle
|
||||||
|
* @param name The filename being loaded, used for error reporting
|
||||||
* @return True if the symbol could be found
|
* @return True if the symbol could be found
|
||||||
*/
|
*/
|
||||||
bool FindSym(void** v, void* h);
|
bool FindSym(void** v, void* h, const std::string &name);
|
||||||
|
|
||||||
/** A list of core-implemented modes and their shared object handles
|
/** A list of core-implemented modes and their shared object handles
|
||||||
*/
|
*/
|
||||||
|
@ -458,13 +458,13 @@ CommandParser::CommandParser(InspIRCd* Instance) : ServerInstance(Instance)
|
|||||||
para.resize(128);
|
para.resize(128);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandParser::FindSym(void** v, void* h)
|
bool CommandParser::FindSym(void** v, void* h, const std::string &name)
|
||||||
{
|
{
|
||||||
*v = dlsym(h, "init_command");
|
*v = dlsym(h, "init_command");
|
||||||
const char* err = dlerror();
|
const char* err = dlerror();
|
||||||
if (err && !(*v))
|
if (err && !(*v))
|
||||||
{
|
{
|
||||||
ServerInstance->Log(SPARSE, "Error loading core command: %s\n", err);
|
ServerInstance->Log(SPARSE, "Error loading core command %s: %s\n", name, err);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -546,11 +546,11 @@ const char* CommandParser::LoadCommand(const char* name)
|
|||||||
if (!h)
|
if (!h)
|
||||||
{
|
{
|
||||||
const char* n = dlerror();
|
const char* n = dlerror();
|
||||||
ServerInstance->Log(SPARSE, "Error loading core command: %s", n);
|
ServerInstance->Log(SPARSE, "Error loading core command %s: %s", name, n);
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->FindSym((void **)&cmd_factory_func, h))
|
if (this->FindSym((void **)&cmd_factory_func, h, name))
|
||||||
{
|
{
|
||||||
command_t* newcommand = cmd_factory_func(ServerInstance);
|
command_t* newcommand = cmd_factory_func(ServerInstance);
|
||||||
this->CreateCommand(newcommand, h);
|
this->CreateCommand(newcommand, h);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user