From 024048d646e5b98846e9967984ad452d2d6bf210 Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 10 Mar 2006 17:39:19 +0000 Subject: Moved more stuff into right places git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3637 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/inspircd_io.cpp | 12 ++++++++++-- src/users.cpp | 52 +++++++++++++++++++++++++++++++++++----------------- 2 files changed, 45 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp index d167c5034..825b4eb31 100644 --- a/src/inspircd_io.cpp +++ b/src/inspircd_io.cpp @@ -567,6 +567,16 @@ void ServerConfig::Read(bool bail, userrec* user) {DT_CHARPTR, DT_CHARPTR}, InitXLine, DoELine, DoneXLine}, + {"type", + {"name", "classes", NULL}, + {DT_CHARPTR, DT_CHARPTR}, + InitTypes, DoType, DoneClassesAndTypes}, + + {"class", + {"name", "commands", NULL}, + {DT_CHARPTR, DT_CHARPTR}, + InitClasss, DoClass, DoneClassesAndTypes}, + {NULL} }; @@ -693,8 +703,6 @@ void ServerConfig::Read(bool bail, userrec* user) for (int n = 0; n < 12; n++) delete[] data[n]; - ReadClassesAndTypes(); - // write once here, to try it out and make sure its ok WritePID(Config->PID); diff --git a/src/users.cpp b/src/users.cpp index 13146a086..beccb7e66 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -62,35 +62,53 @@ typedef opertype_t operclass_t; opertype_t opertypes; operclass_t operclass; -void ReadClassesAndTypes() +bool InitTypes(const char* tag) { - char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; for (opertype_t::iterator n = opertypes.begin(); n != opertypes.end(); n++) { if (n->second) delete[] n->second; } + opertypes.clear(); + return true; +} + +bool InitClasses(const char* tag) +{ for (operclass_t::iterator n = operclass.begin(); n != operclass.end(); n++) { if (n->second) delete[] n->second; } - opertypes.clear(); operclass.clear(); - for (int j =0; j < Config->ConfValueEnum("type",&Config->config_f); j++) - { - Config->ConfValue("type","name",j,TypeName,&Config->config_f); - Config->ConfValue("type","classes",j,Classes,&Config->config_f); - opertypes[TypeName] = strdup(Classes); - log(DEBUG,"Read oper TYPE '%s' with classes '%s'",TypeName,Classes); - } - for (int k =0; k < Config->ConfValueEnum("class",&Config->config_f); k++) - { - Config->ConfValue("class","name",k,ClassName,&Config->config_f); - Config->ConfValue("class","commands",k,CommandList,&Config->config_f); - operclass[ClassName] = strdup(CommandList); - log(DEBUG,"Read oper CLASS '%s' with commands '%s'",ClassName,CommandList); - } + return true; +} + +bool DoType(const char* tag, char** entries, void** values, int* types) +{ + char* TypeName = (char*)values[0]; + char* Classes = (char*)values[1]; + /*Config->ConfValue("type","name",j,TypeName,&Config->config_f); + Config->ConfValue("type","classes",j,Classes,&Config->config_f);*/ + opertypes[TypeName] = strdup(Classes); + log(DEBUG,"Read oper TYPE '%s' with classes '%s'",TypeName,Classes); + return true; +} + +bool DoClass(const char* tag, char** entries, void** values, int* types) +{ + char* ClassName = (char*)values[0]; + char* CommandList = (char*)values[1]; + /*Config->ConfValue("class","name",k,ClassName,&Config->config_f); + Config->ConfValue("class","commands",k,CommandList,&Config->config_f);*/ + operclass[ClassName] = strdup(CommandList); + log(DEBUG,"Read oper CLASS '%s' with commands '%s'",ClassName,CommandList); + return true; +} + +bool DoneClassesAndTypes() +{ + return true; } template inline string ConvToStr(const T &in) -- cgit v1.2.3