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:
brain 2007-10-14 21:16:44 +00:00
parent 71532e29af
commit 45776df702
2 changed files with 6 additions and 5 deletions

View File

@ -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
*/ */

View File

@ -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);