X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fconfigreader.cpp;h=51045ef5859a8dba15f215e3666849a43f7e9b64;hb=48045988a48a738a1ffa183fdc1e335a431312a8;hp=e7613ce5a6c1b92803652f10bb6d74004e714378;hpb=9bca43848201f951a5887ef79469139c2915e9ad;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/configreader.cpp b/src/configreader.cpp index e7613ce5a..51045ef58 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -3,7 +3,7 @@ * +------------------------------------+ * * 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. @@ -739,10 +739,10 @@ void ServerConfig::ReportConfigError(const std::string &errormessage, bool bail, } 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; } } @@ -1006,7 +1006,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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: @@ -1035,7 +1035,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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); @@ -1068,7 +1068,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) } /* 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) @@ -1077,9 +1077,9 @@ void ServerConfig::Read(bool bail, const std::string &useruid) */ 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); @@ -1094,7 +1094,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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 @@ -1173,10 +1173,10 @@ void ServerConfig::Read(bool bail, const std::string &useruid) } 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); } @@ -1196,7 +1196,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) return; } - ServerInstance->Threads->Lock(); + // XXX: ServerInstance->Threads->Lock(); for (int i = 0; i < ConfValueEnum(newconfig, "type"); ++i) { char item[MAXBUF], classn[MAXBUF], classes[MAXBUF]; @@ -1230,7 +1230,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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()); } } } @@ -1239,7 +1239,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) /* 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); @@ -1254,7 +1254,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) if (pl.size() && !useruid.empty()) { - ServerInstance->Threads->Lock(); + // XXX: ServerInstance->Threads->Lock(); User* user = ServerInstance->FindNick(useruid); if (user) { @@ -1266,17 +1266,17 @@ void ServerConfig::Read(bool bail, const std::string &useruid) user->WriteServ("NOTICE %s :*** %d. Address: %s Reason: %s", user->nick.c_str(), j, i->first.empty() ? "" : 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::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()) { @@ -1285,7 +1285,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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++; } @@ -1298,7 +1298,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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()); } } } @@ -1309,7 +1309,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) { 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); @@ -1317,7 +1317,7 @@ void ServerConfig::Read(bool bail, const std::string &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++; } @@ -1330,11 +1330,11 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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(); } @@ -1347,7 +1347,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) 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."); } } @@ -2046,64 +2046,6 @@ char* ServerConfig::CleanFilename(char* name) } -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]; @@ -2205,15 +2147,6 @@ bool ValueItem::GetBool() */ 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; } @@ -2250,7 +2183,7 @@ bool DoType(ServerConfig* conf, const char*, char**, ValueList &values, int*) 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; } @@ -2372,7 +2305,5 @@ bool DoneELine(ServerConfig* conf, const char* tag) void ConfigReaderThread::Run() { ServerInstance->Config->Read(do_bail, TheUserUID); - ServerInstance->Threads->Lock(); - this->SetExitFlag(); - ServerInstance->Threads->Unlock(); + done = true; }