* +------------------------------------+
*
* InspIRCd: (C) 2002-2009 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
}
else
{
- ServerInstance->SNO->WriteToSnoMask('A', "There were errors in the configuration file:");
+ ServerInstance->SNO->WriteToSnoMask('a', "There were errors in the configuration file:");
while (start < errors.length())
{
- ServerInstance->SNO->WriteToSnoMask('A', errors.substr(start, 360));
+ ServerInstance->SNO->WriteToSnoMask('a', errors.substr(start, 360));
start += 360;
}
}
if (!Values[Index].validation_function(this, Values[Index].tag, Values[Index].value, vi))
throw CoreException("One or more values in your configuration file failed to validate. Please see your ircd.log for more information.");
- ServerInstance->Threads->Lock();
+ // XXX: ServerInstance->Threads->Lock();
switch (dt)
{
case DT_NOSPACES:
ValueContainerChar* vcc = (ValueContainerChar*)Values[Index].val;
if (*(vi.GetString()) && !ServerInstance->IsChannel(vi.GetString(), MAXBUF))
{
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
throw CoreException("The value of <"+std::string(Values[Index].tag)+":"+Values[Index].value+"> is not a valid channel name");
}
vcc->Set(vi.GetString(), strlen(vi.GetString()) + 1);
}
/* We're done with this now */
delete Values[Index].val;
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
}
/* Read the multiple-tag items (class tags, connect tags, etc)
*/
for (int Index = 0; MultiValues[Index].tag; ++Index)
{
- ServerInstance->Threads->Lock();
+ // XXX: ServerInstance->Threads->Lock();
MultiValues[Index].init_function(this, MultiValues[Index].tag);
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
int number_of_tags = ConfValueEnum(newconfig, MultiValues[Index].tag);
dt &= ~DT_ALLOW_NEWLINE;
dt &= ~DT_ALLOW_WILD;
- ServerInstance->Threads->Lock();
+ // XXX: ServerInstance->Threads->Lock();
/* We catch and rethrow any exception here just so we can free our mutex
*/
try
}
catch (CoreException &e)
{
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
throw e;
}
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
}
MultiValues[Index].validation_function(this, MultiValues[Index].tag, (char**)MultiValues[Index].items, vl, MultiValues[Index].datatype);
}
return;
}
- ServerInstance->Threads->Lock();
+ // XXX: ServerInstance->Threads->Lock();
for (int i = 0; i < ConfValueEnum(newconfig, "type"); ++i)
{
char item[MAXBUF], classn[MAXBUF], classes[MAXBUF];
if (bail)
printf("Warning: Oper type '%s' has a missing class named '%s', this does nothing!\n", item, classname.c_str());
else
- ServerInstance->SNO->WriteToSnoMask('A', "Warning: Oper type '%s' has a missing class named '%s', this does nothing!", item, classname.c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "Warning: Oper type '%s' has a missing class named '%s', this does nothing!", item, classname.c_str());
}
}
}
/* If we succeeded, set the ircd config to the new one */
this->config_data = newconfig;
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
// write once here, to try it out and make sure its ok
ServerInstance->WritePID(this->PID);
if (pl.size() && !useruid.empty())
{
- ServerInstance->Threads->Lock();
+ // XXX: ServerInstance->Threads->Lock();
User* user = ServerInstance->FindNick(useruid);
if (user)
{
user->WriteServ("NOTICE %s :*** %d. Address: %s Reason: %s", user->nick.c_str(), j, i->first.empty() ? "<all>" : i->first.c_str(), i->second.c_str());
}
}
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
}
- ServerInstance->Threads->Lock();
+ // XXX: ServerInstance->Threads->Lock();
if (!removed_modules.empty())
{
for (std::vector<std::string>::iterator removing = removed_modules.begin(); removing != removed_modules.end(); removing++)
{
if (ServerInstance->Modules->Unload(removing->c_str()))
{
- ServerInstance->SNO->WriteToSnoMask('A', "*** REHASH UNLOADED MODULE: %s",removing->c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "*** REHASH UNLOADED MODULE: %s",removing->c_str());
if (!useruid.empty())
{
user->WriteNumeric(RPL_UNLOADEDMODULE, "%s %s :Module %s successfully unloaded.",user->nick.c_str(), removing->c_str(), removing->c_str());
}
else
- ServerInstance->SNO->WriteToSnoMask('A', "Module %s successfully unloaded.", removing->c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "Module %s successfully unloaded.", removing->c_str());
rem++;
}
user->WriteNumeric(ERR_CANTUNLOADMODULE, "%s %s :Failed to unload module %s: %s",user->nick.c_str(), removing->c_str(), removing->c_str(), ServerInstance->Modules->LastError().c_str());
}
else
- ServerInstance->SNO->WriteToSnoMask('A', "Failed to unload module %s: %s", removing->c_str(), ServerInstance->Modules->LastError().c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "Failed to unload module %s: %s", removing->c_str(), ServerInstance->Modules->LastError().c_str());
}
}
}
{
if (ServerInstance->Modules->Load(adding->c_str()))
{
- ServerInstance->SNO->WriteToSnoMask('A', "*** REHASH LOADED MODULE: %s",adding->c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "*** REHASH LOADED MODULE: %s",adding->c_str());
if (!useruid.empty())
{
User* user = ServerInstance->FindNick(useruid);
user->WriteNumeric(RPL_LOADEDMODULE, "%s %s :Module %s successfully loaded.",user->nick.c_str(), adding->c_str(), adding->c_str());
}
else
- ServerInstance->SNO->WriteToSnoMask('A', "Module %s successfully loaded.", adding->c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "Module %s successfully loaded.", adding->c_str());
add++;
}
user->WriteNumeric(ERR_CANTLOADMODULE, "%s %s :Failed to load module %s: %s",user->nick.c_str(), adding->c_str(), adding->c_str(), ServerInstance->Modules->LastError().c_str());
}
else
- ServerInstance->SNO->WriteToSnoMask('A', "Failed to load module %s: %s", adding->c_str(), ServerInstance->Modules->LastError().c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "Failed to load module %s: %s", adding->c_str(), ServerInstance->Modules->LastError().c_str());
}
}
}
- ServerInstance->Threads->Unlock();
+ // XXX: ServerInstance->Threads->Unlock();
}
user->WriteServ("NOTICE %s :*** Successfully rehashed server.", user->nick.c_str());
}
else
- ServerInstance->SNO->WriteToSnoMask('A', "*** Successfully rehashed server.");
+ ServerInstance->SNO->WriteToSnoMask('a', "*** Successfully rehashed server.");
}
}
}
-bool ServerConfig::DirValid(const char* dirandfile)
-{
-#ifdef WINDOWS
- return true;
-#else
-
- char work[1024];
- char buffer[1024];
- char otherdir[1024];
- int p;
-
- strlcpy(work, dirandfile, 1024);
- p = strlen(work);
-
- // we just want the dir
- while (*work)
- {
- if (work[p] == '/')
- {
- work[p] = '\0';
- break;
- }
-
- work[p--] = '\0';
- }
-
- // Get the current working directory
- if (getcwd(buffer, 1024 ) == NULL )
- return false;
-
- if (chdir(work) == -1)
- return false;
-
- if (getcwd(otherdir, 1024 ) == NULL )
- return false;
-
- if (chdir(buffer) == -1)
- return false;
-
- size_t t = strlen(work);
-
- if (strlen(otherdir) >= t)
- {
- otherdir[t] = '\0';
- if (!strcmp(otherdir,work))
- {
- return true;
- }
-
- return false;
- }
- else
- {
- return false;
- }
-#endif
-}
-
std::string ServerConfig::GetFullProgDir()
{
char buffer[PATH_MAX];
*/
bool InitTypes(ServerConfig* conf, const char*)
{
- if (conf->opertypes.size())
- {
- for (opertype_t::iterator n = conf->opertypes.begin(); n != conf->opertypes.end(); n++)
- {
- if (n->second)
- delete[] n->second;
- }
- }
-
conf->opertypes.clear();
return true;
}
const char* TypeName = values[0].GetString();
const char* Classes = values[1].GetString();
- conf->opertypes[TypeName] = strnewdup(Classes);
+ conf->opertypes[TypeName] = std::string(Classes);
return true;
}
void ConfigReaderThread::Run()
{
ServerInstance->Config->Read(do_bail, TheUserUID);
- ServerInstance->Threads->Lock();
- this->SetExitFlag();
- ServerInstance->Threads->Unlock();
+ done = true;
}