-.TH "Admin" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Admin" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
It is constructed by class \fBServer\fP, and has three read-only values, Name, Email and Nick that contain the specified values for the server where the module is running.
.PP
-Definition at line 125 of file modules.h.
+Definition at line 143 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Admin::Admin (\fBstd::string\fP name, \fBstd::string\fP email, \fBstd::string\fP nick)"
.PP
-Definition at line 163 of file modules.cpp.
+Definition at line 162 of file modules.cpp.
.PP
.nf
-163 : Name(name), Email(email), Nick(nick) { };
+162 : Name(name), Email(email), Nick(nick) { };
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "const \fBstd::string\fP \fBAdmin::Email\fP"
.PP
-Definition at line 128 of file modules.h.
+Definition at line 146 of file modules.h.
.SS "const \fBstd::string\fP \fBAdmin::Name\fP"
.PP
-Definition at line 128 of file modules.h.
+Definition at line 146 of file modules.h.
.SS "const \fBstd::string\fP \fBAdmin::Nick\fP"
.PP
-Definition at line 128 of file modules.h.
+Definition at line 146 of file modules.h.
.SH "Author"
.PP
-.TH "BanItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "BanItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "BoolSet" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "BoolSet" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "ConfigReader" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ConfigReader" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
It may either be instantiated with one parameter or none. Constructing the class using one parameter allows you to specify a path to your own configuration file, otherwise, inspircd.conf is read.
.PP
-Definition at line 1532 of file modules.h.
+Definition at line 1550 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ConfigReader::ConfigReader ()"
.PP
This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.
.PP
-Definition at line 736 of file modules.cpp.
+Definition at line 735 of file modules.cpp.
.PP
References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.
.PP
.nf
-737 {
-738 Config->ClearStack();
-739 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
-740 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
-741 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog);
-742 if (!this->readerror)
-743 this->error = CONF_FILE_NOT_FOUND;
-744 }
+736 {
+737 Config->ClearStack();
+738 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
+739 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
+740 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog);
+741 if (!this->readerror)
+742 this->error = CONF_FILE_NOT_FOUND;
+743 }
.fi
.PP
.SS "ConfigReader::ConfigReader (\fBstd::string\fP filename)"
.PP
This constructor initialises the ConfigReader class to read a user-specified config file
.PP
-Definition at line 756 of file modules.cpp.
+Definition at line 755 of file modules.cpp.
.PP
References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.
.PP
.nf
-757 {
-758 Config->ClearStack();
-759 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
-760 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
-761 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog);
-762 if (!this->readerror)
-763 this->error = CONF_FILE_NOT_FOUND;
-764 };
+756 {
+757 Config->ClearStack();
+758 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
+759 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
+760 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog);
+761 if (!this->readerror)
+762 this->error = CONF_FILE_NOT_FOUND;
+763 };
.fi
.PP
.SS "ConfigReader::~ConfigReader ()"
.PP
This method destroys the ConfigReader class.
.PP
-Definition at line 747 of file modules.cpp.
+Definition at line 746 of file modules.cpp.
.PP
References cache, and errorlog.
.PP
.nf
-748 {
-749 if (this->cache)
-750 delete this->cache;
-751 if (this->errorlog)
-752 delete this->errorlog;
-753 }
+747 {
+748 if (this->cache)
+749 delete this->cache;
+750 if (this->errorlog)
+751 delete this->errorlog;
+752 }
.fi
.PP
.SH "Member Function Documentation"
.PP
If bail is true, then the program will abort. If bail is false and user points to a valid user record, the error report will be spooled to the given user by means of NOTICE. if bool is false AND user is false, the error report will be spooled to all opers by means of a NOTICE to all opers.
.PP
-Definition at line 835 of file modules.cpp.
+Definition at line 834 of file modules.cpp.
.PP
References errorlog, connection::fd, userrec::nick, WriteOpers(), and WriteServ().
.PP
.nf
-836 {
-837 if (bail)
-838 {
-839 printf('There were errors in your configuration:\n%s',errorlog->str().c_str());
-840 exit(0);
-841 }
-842 else
-843 {
-844 char dataline[1024];
-845 if (user)
-846 {
-847 WriteServ(user->fd,'NOTICE %s :There were errors in the configuration file:',user->nick);
-848 while (!errorlog->eof())
-849 {
-850 errorlog->getline(dataline,1024);
-851 WriteServ(user->fd,'NOTICE %s :%s',user->nick,dataline);
-852 }
-853 }
-854 else
-855 {
-856 WriteOpers('There were errors in the configuration file:',user->nick);
-857 while (!errorlog->eof())
-858 {
-859 errorlog->getline(dataline,1024);
-860 WriteOpers(dataline);
-861 }
-862 }
-863 return;
-864 }
-865 }
+835 {
+836 if (bail)
+837 {
+838 printf('There were errors in your configuration:\n%s',errorlog->str().c_str());
+839 exit(0);
+840 }
+841 else
+842 {
+843 char dataline[1024];
+844 if (user)
+845 {
+846 WriteServ(user->fd,'NOTICE %s :There were errors in the configuration file:',user->nick);
+847 while (!errorlog->eof())
+848 {
+849 errorlog->getline(dataline,1024);
+850 WriteServ(user->fd,'NOTICE %s :%s',user->nick,dataline);
+851 }
+852 }
+853 else
+854 {
+855 WriteOpers('There were errors in the configuration file:',user->nick);
+856 while (!errorlog->eof())
+857 {
+858 errorlog->getline(dataline,1024);
+859 WriteOpers(dataline);
+860 }
+861 }
+862 return;
+863 }
+864 }
.fi
.PP
.SS "int ConfigReader::Enumerate (\fBstd::string\fP tag)"
.PP
This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of \fBConfigReader::ReadValue\fP to loop through all copies of a multiple instance tag.
.PP
-Definition at line 868 of file modules.cpp.
+Definition at line 867 of file modules.cpp.
.PP
References cache, and ServerConfig::EnumConf().
.PP
.nf
-869 {
-870 return Config->EnumConf(cache,tag.c_str());
-871 }
+868 {
+869 return Config->EnumConf(cache,tag.c_str());
+870 }
.fi
.PP
.SS "int ConfigReader::EnumerateValues (\fBstd::string\fP tag, int index)"
.PP
For example if the tag was <test tag='blah' data='foo'> then this function would return 2. Spaces and newlines both qualify as valid seperators between values.
.PP
-Definition at line 873 of file modules.cpp.
+Definition at line 872 of file modules.cpp.
.PP
References cache, and ServerConfig::EnumValues().
.PP
.nf
-874 {
-875 return Config->EnumValues(cache, tag.c_str(), index);
-876 }
+873 {
+874 return Config->EnumValues(cache, tag.c_str(), index);
+875 }
.fi
.PP
.SS "long ConfigReader::GetError ()"
.PP
Valid errors can be found by looking in \fBmodules.h\fP. Any nonzero value indicates an error condition. A call to \fBGetError()\fP resets the error flag back to 0.
.PP
-Definition at line 828 of file modules.cpp.
+Definition at line 827 of file modules.cpp.
.PP
References error.
.PP
.nf
-829 {
-830 long olderr = this->error;
-831 this->error = 0;
-832 return olderr;
-833 }
+828 {
+829 long olderr = this->error;
+830 this->error = 0;
+831 return olderr;
+832 }
.fi
.PP
.SS "bool ConfigReader::ReadFlag (\fBstd::string\fP tag, \fBstd::string\fP name, int index)"
.PP
This method retrieves a boolean value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. The values '1', 'yes' and 'true' in the config file count as true to ReadFlag, and any other value counts as false.
.PP
-Definition at line 782 of file modules.cpp.
+Definition at line 781 of file modules.cpp.
.PP
References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().
.PP
.nf
-783 {
-784 char val[MAXBUF];
-785 char t[MAXBUF];
-786 char n[MAXBUF];
-787 strlcpy(t,tag.c_str(),MAXBUF);
-788 strlcpy(n,name.c_str(),MAXBUF);
-789 int res = Config->ReadConf(cache,t,n,index,val);
-790 if (!res)
-791 {
-792 this->error = CONF_VALUE_NOT_FOUND;
-793 return false;
-794 }
-795 std::string s = val;
-796 return ((s == 'yes') || (s == 'YES') || (s == 'true') || (s == 'TRUE') || (s == '1'));
-797 }
+782 {
+783 char val[MAXBUF];
+784 char t[MAXBUF];
+785 char n[MAXBUF];
+786 strlcpy(t,tag.c_str(),MAXBUF);
+787 strlcpy(n,name.c_str(),MAXBUF);
+788 int res = Config->ReadConf(cache,t,n,index,val);
+789 if (!res)
+790 {
+791 this->error = CONF_VALUE_NOT_FOUND;
+792 return false;
+793 }
+794 std::string s = val;
+795 return ((s == 'yes') || (s == 'YES') || (s == 'true') || (s == 'TRUE') || (s == '1'));
+796 }
.fi
.PP
.SS "long ConfigReader::ReadInteger (\fBstd::string\fP tag, \fBstd::string\fP name, int index, bool needs_unsigned)"
.PP
This method retrieves an integer value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. Any invalid integer values in the tag will cause the objects error value to be set, and any call to \fBGetError()\fP will return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned. If a signed number is placed into a tag which is specified unsigned, 0 will be returned and \fBGetError()\fP will return CONF_NOT_UNSIGNED
.PP
-Definition at line 799 of file modules.cpp.
+Definition at line 798 of file modules.cpp.
.PP
References cache, CONF_NOT_A_NUMBER, CONF_NOT_UNSIGNED, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().
.PP
.nf
-800 {
-801 char val[MAXBUF];
-802 char t[MAXBUF];
-803 char n[MAXBUF];
-804 strlcpy(t,tag.c_str(),MAXBUF);
-805 strlcpy(n,name.c_str(),MAXBUF);
-806 int res = Config->ReadConf(cache,t,n,index,val);
-807 if (!res)
-808 {
-809 this->error = CONF_VALUE_NOT_FOUND;
-810 return 0;
-811 }
-812 for (unsigned int i = 0; i < strlen(val); i++)
-813 {
-814 if (!isdigit(val[i]))
-815 {
-816 this->error = CONF_NOT_A_NUMBER;
-817 return 0;
-818 }
-819 }
-820 if ((needs_unsigned) && (atoi(val)<0))
-821 {
-822 this->error = CONF_NOT_UNSIGNED;
-823 return 0;
-824 }
-825 return atoi(val);
-826 }
+799 {
+800 char val[MAXBUF];
+801 char t[MAXBUF];
+802 char n[MAXBUF];
+803 strlcpy(t,tag.c_str(),MAXBUF);
+804 strlcpy(n,name.c_str(),MAXBUF);
+805 int res = Config->ReadConf(cache,t,n,index,val);
+806 if (!res)
+807 {
+808 this->error = CONF_VALUE_NOT_FOUND;
+809 return 0;
+810 }
+811 for (unsigned int i = 0; i < strlen(val); i++)
+812 {
+813 if (!isdigit(val[i]))
+814 {
+815 this->error = CONF_NOT_A_NUMBER;
+816 return 0;
+817 }
+818 }
+819 if ((needs_unsigned) && (atoi(val)<0))
+820 {
+821 this->error = CONF_NOT_UNSIGNED;
+822 return 0;
+823 }
+824 return atoi(val);
+825 }
.fi
.PP
.SS "\fBstd::string\fP ConfigReader::ReadValue (\fBstd::string\fP tag, \fBstd::string\fP name, int index)"
.PP
This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.
.PP
-Definition at line 766 of file modules.cpp.
+Definition at line 765 of file modules.cpp.
.PP
References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().
.PP
.nf
-767 {
-768 char val[MAXBUF];
-769 char t[MAXBUF];
-770 char n[MAXBUF];
-771 strlcpy(t,tag.c_str(),MAXBUF);
-772 strlcpy(n,name.c_str(),MAXBUF);
-773 int res = Config->ReadConf(cache,t,n,index,val);
-774 if (!res)
-775 {
-776 this->error = CONF_VALUE_NOT_FOUND;
-777 return '';
-778 }
-779 return val;
-780 }
+766 {
+767 char val[MAXBUF];
+768 char t[MAXBUF];
+769 char n[MAXBUF];
+770 strlcpy(t,tag.c_str(),MAXBUF);
+771 strlcpy(n,name.c_str(),MAXBUF);
+772 int res = Config->ReadConf(cache,t,n,index,val);
+773 if (!res)
+774 {
+775 this->error = CONF_VALUE_NOT_FOUND;
+776 return '';
+777 }
+778 return val;
+779 }
.fi
.PP
.SS "bool ConfigReader::Verify ()"
.PP
This method is partially implemented and will only return false if the config file does not exist or could not be opened.
.PP
-Definition at line 878 of file modules.cpp.
+Definition at line 877 of file modules.cpp.
.PP
References readerror.
.PP
.nf
-879 {
-880 return this->readerror;
-881 }
+878 {
+879 return this->readerror;
+880 }
.fi
.PP
.SH "Member Data Documentation"
.PP
It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it.
.PP
-Definition at line 1540 of file modules.h.
+Definition at line 1558 of file modules.h.
.PP
Referenced by ConfigReader(), Enumerate(), EnumerateValues(), ReadFlag(), ReadInteger(), ReadValue(), and ~ConfigReader().
.SS "long \fBConfigReader::error\fP\fC [protected]\fP"
.PP
-Definition at line 1545 of file modules.h.
+Definition at line 1563 of file modules.h.
.PP
Referenced by ConfigReader(), GetError(), ReadFlag(), ReadInteger(), and ReadValue().
.SS "std::stringstream* \fBConfigReader::errorlog\fP\fC [protected]\fP"
.PP
-Definition at line 1541 of file modules.h.
+Definition at line 1559 of file modules.h.
.PP
Referenced by ConfigReader(), DumpErrors(), and ~ConfigReader().
.SS "bool \fBConfigReader::readerror\fP\fC [protected]\fP"
.PP
Used to store errors.
.PP
-Definition at line 1544 of file modules.h.
+Definition at line 1562 of file modules.h.
.PP
Referenced by ConfigReader(), and Verify().
-.TH "ConnectClass" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ConnectClass" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
Holds information relevent to <connect allow> and <connect deny> tags in the config file.
.PP
-Definition at line 48 of file users.h.
+Definition at line 52 of file users.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ConnectClass::ConnectClass ()\fC [inline]\fP"
.PP
-Definition at line 82 of file users.h.
+Definition at line 86 of file users.h.
.PP
References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax, and threshold.
.PP
.nf
-83 {
-84 registration_timeout = 0;
-85 flood = 0;
-86 pingtime = 0;
-87 threshold = 0;
-88 sendqmax = 0;
-89 recvqmax = 0;
-90 strlcpy(host,'',MAXBUF);
-91 strlcpy(pass,'',MAXBUF);
-92 }
+87 {
+88 registration_timeout = 0;
+89 flood = 0;
+90 pingtime = 0;
+91 threshold = 0;
+92 sendqmax = 0;
+93 recvqmax = 0;
+94 strlcpy(host,'',MAXBUF);
+95 strlcpy(pass,'',MAXBUF);
+96 }
.fi
.PP
.SH "Member Data Documentation"
.PP
Number of lines in buffer before excess flood is triggered.
.PP
-Definition at line 59 of file users.h.
+Definition at line 63 of file users.h.
.PP
Referenced by ConnectClass().
.SS "char \fBConnectClass::host\fP[MAXBUF]"
.PP
Host mask for this line.
.PP
-Definition at line 62 of file users.h.
+Definition at line 66 of file users.h.
.PP
Referenced by ConnectClass().
.SS "char \fBConnectClass::pass\fP[MAXBUF]"
.PP
(Optional) Password for this line
.PP
-Definition at line 68 of file users.h.
+Definition at line 72 of file users.h.
.PP
Referenced by ConnectClass().
.SS "int \fBConnectClass::pingtime\fP"
.PP
Number of seconds between pings for this line.
.PP
-Definition at line 65 of file users.h.
+Definition at line 69 of file users.h.
.PP
Referenced by ConnectClass().
.SS "long \fBConnectClass::recvqmax\fP"
.PP
Maximum size of recvq for users in this class (bytes).
.PP
-Definition at line 80 of file users.h.
+Definition at line 84 of file users.h.
.PP
Referenced by ConnectClass().
.SS "int \fBConnectClass::registration_timeout\fP"
.PP
Max time to register the connection in seconds.
.PP
-Definition at line 56 of file users.h.
+Definition at line 60 of file users.h.
.PP
Referenced by ConnectClass().
.SS "long \fBConnectClass::sendqmax\fP"
.PP
Maximum size of sendq for users in this class (bytes).
.PP
-Definition at line 76 of file users.h.
+Definition at line 80 of file users.h.
.PP
Referenced by ConnectClass().
.SS "int \fBConnectClass::threshold\fP"
.PP
Threshold value for flood disconnect.
.PP
-Definition at line 72 of file users.h.
+Definition at line 76 of file users.h.
.PP
Referenced by ConnectClass().
.SS "char \fBConnectClass::type\fP"
.PP
Type of line, either CC_ALLOW or CC_DENY.
.PP
-Definition at line 53 of file users.h.
+Definition at line 57 of file users.h.
.SH "Author"
.PP
-.TH "CullItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "CullItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "CullList" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "CullList" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "DNS" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "DNS" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "ELine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ELine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "Event" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Event" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
When the class is properly instantiated it may be sent to all modules using the \fBSend()\fP method, which will trigger the OnEvent method in all modules passing the object as its parameter.
.PP
-Definition at line 197 of file modules.h.
+Definition at line 215 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Event::Event (char * anydata, \fBModule\fP * src, \fBstd::string\fP eventid)"
.PP
Create a new Event.
.PP
-Definition at line 194 of file modules.cpp.
+Definition at line 193 of file modules.cpp.
.PP
.nf
-194 : data(anydata), source(src), id(eventid) { };
+193 : data(anydata), source(src), id(eventid) { };
.fi
.PP
.SH "Member Function Documentation"
.PP
Get the Event data.
.PP
-Definition at line 196 of file modules.cpp.
+Definition at line 195 of file modules.cpp.
.PP
References data.
.PP
.nf
-197 {
-198 return this->data;
-199 }
+196 {
+197 return this->data;
+198 }
.fi
.PP
.SS "\fBstd::string\fP Event::GetEventID ()"
.PP
Use this to determine the event type for safe casting of the data
.PP
-Definition at line 212 of file modules.cpp.
+Definition at line 211 of file modules.cpp.
.PP
References id.
.PP
.nf
-213 {
-214 return this->id;
-215 }
+212 {
+213 return this->id;
+214 }
.fi
.PP
.SS "\fBModule\fP * Event::GetSource ()"
.PP
Get the event Source.
.PP
-Definition at line 201 of file modules.cpp.
+Definition at line 200 of file modules.cpp.
.PP
References source.
.PP
.nf
-202 {
-203 return this->source;
-204 }
+201 {
+202 return this->source;
+203 }
.fi
.PP
.SS "char * Event::Send ()\fC [virtual]\fP"
.PP
Implements \fBModuleMessage\fP.
.PP
-Definition at line 206 of file modules.cpp.
+Definition at line 205 of file modules.cpp.
.PP
References FOREACH_MOD.
.PP
.nf
-207 {
-208 FOREACH_MOD OnEvent(this);
-209 return NULL;
-210 }
+206 {
+207 FOREACH_MOD OnEvent(this);
+208 return NULL;
+209 }
.fi
.PP
.SH "Member Data Documentation"
.PP
This member holds a pointer to arbitary data set by the emitter of the message.
.PP
-Definition at line 202 of file modules.h.
+Definition at line 220 of file modules.h.
.PP
Referenced by GetData().
.SS "\fBstd::string\fP \fBEvent::id\fP\fC [protected]\fP"
.PP
This is arbitary text which should be used to distinguish one type of event from another.
.PP
-Definition at line 211 of file modules.h.
+Definition at line 229 of file modules.h.
.PP
Referenced by GetEventID().
.SS "\fBModule\fP* \fBEvent::source\fP\fC [protected]\fP"
.PP
This is a pointer to the sender of the message, which can be used to directly trigger events, or to create a reply.
.PP
-Definition at line 206 of file modules.h.
+Definition at line 224 of file modules.h.
.PP
Referenced by GetSource().
-.TH "ExemptItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ExemptItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "ExtMode" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ExtMode" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
Used internally by \fBmodules.cpp\fP
.PP
-Definition at line 236 of file modules.h.
+Definition at line 254 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ExtMode::ExtMode (char mc, int ty, bool oper, int p_on, int p_off)\fC [inline]\fP"
.PP
-Definition at line 245 of file modules.h.
+Definition at line 263 of file modules.h.
.PP
.nf
-245 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
+263 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "bool \fBExtMode::list\fP"
.PP
-Definition at line 244 of file modules.h.
+Definition at line 262 of file modules.h.
.SS "char \fBExtMode::modechar\fP"
.PP
-Definition at line 239 of file modules.h.
+Definition at line 257 of file modules.h.
.SS "bool \fBExtMode::needsoper\fP"
.PP
-Definition at line 241 of file modules.h.
+Definition at line 259 of file modules.h.
.SS "int \fBExtMode::params_when_off\fP"
.PP
-Definition at line 243 of file modules.h.
+Definition at line 261 of file modules.h.
.SS "int \fBExtMode::params_when_on\fP"
.PP
-Definition at line 242 of file modules.h.
+Definition at line 260 of file modules.h.
.SS "int \fBExtMode::type\fP"
.PP
-Definition at line 240 of file modules.h.
+Definition at line 258 of file modules.h.
.SH "Author"
.PP
-.TH "Extensible" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Extensible" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
Inherits \fBclassbase\fP.
.PP
-Inherited by \fBchanrec\fP, \fBcommand_t\fP, and \fBconnection\fP.
+Inherited by \fBchanrec\fP, and \fBconnection\fP.
.PP
.SS "Public Member Functions"
-.TH "FileReader" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "FileReader" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
This class contains methods for read-only manipulation of a text file in memory. Either use the constructor type with one parameter to load a file into memory at construction, or use the LoadFile method to load a file.
.PP
-Definition at line 1621 of file modules.h.
+Definition at line 1639 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "FileReader::FileReader ()"
.PP
This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.
.PP
-Definition at line 891 of file modules.cpp.
+Definition at line 890 of file modules.cpp.
.PP
.nf
-892 {
-893 }
+891 {
+892 }
.fi
.PP
.SS "FileReader::FileReader (\fBstd::string\fP filename)"
.PP
This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, \fBFileReader::FileSize\fP returns 0.
.PP
-Definition at line 884 of file modules.cpp.
+Definition at line 883 of file modules.cpp.
.PP
References fc, and readfile().
.PP
.nf
-885 {
-886 file_cache c;
-887 readfile(c,filename.c_str());
-888 this->fc = c;
-889 }
+884 {
+885 file_cache c;
+886 readfile(c,filename.c_str());
+887 this->fc = c;
+888 }
.fi
.PP
.SS "FileReader::~FileReader ()"
.PP
This deletes the memory allocated to the file.
.PP
-Definition at line 903 of file modules.cpp.
+Definition at line 902 of file modules.cpp.
.PP
.nf
-904 {
-905 }
+903 {
+904 }
.fi
.PP
.SH "Member Function Documentation"
.PP
Returns true if the file exists This function will return false if the file could not be opened.
.PP
-Definition at line 907 of file modules.cpp.
+Definition at line 906 of file modules.cpp.
.PP
References fc.
.PP
.nf
-908 {
-909 if (fc.size() == 0)
-910 {
-911 return(false);
-912 }
-913 else
-914 {
-915 return(true);
-916 }
-917 }
+907 {
+908 if (fc.size() == 0)
+909 {
+910 return(false);
+911 }
+912 else
+913 {
+914 return(true);
+915 }
+916 }
.fi
.PP
.SS "int FileReader::FileSize ()"
.PP
This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.
.PP
-Definition at line 926 of file modules.cpp.
+Definition at line 925 of file modules.cpp.
.PP
References fc.
.PP
.nf
-927 {
-928 return fc.size();
-929 }
+926 {
+927 return fc.size();
+928 }
.fi
.PP
.SS "\fBstd::string\fP FileReader::GetLine (int x)"
.PP
This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
.PP
-Definition at line 919 of file modules.cpp.
+Definition at line 918 of file modules.cpp.
.PP
References fc.
.PP
.nf
-920 {
-921 if ((x<0) || ((unsigned)x>fc.size()))
-922 return '';
-923 return fc[x];
-924 }
+919 {
+920 if ((x<0) || ((unsigned)x>fc.size()))
+921 return '';
+922 return fc[x];
+923 }
.fi
.PP
.SS "void FileReader::LoadFile (\fBstd::string\fP filename)"
.PP
This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, \fBFileReader::FileSize\fP returns 0.
.PP
-Definition at line 895 of file modules.cpp.
+Definition at line 894 of file modules.cpp.
.PP
References fc, and readfile().
.PP
.nf
-896 {
-897 file_cache c;
-898 readfile(c,filename.c_str());
-899 this->fc = c;
-900 }
+895 {
+896 file_cache c;
+897 readfile(c,filename.c_str());
+898 this->fc = c;
+899 }
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "\fBfile_cache\fP \fBFileReader::fc\fP\fC [private]\fP"
.PP
-Definition at line 1623 of file modules.h.
+Definition at line 1641 of file modules.h.
.PP
Referenced by Exists(), FileReader(), FileSize(), GetLine(), and LoadFile().
-.TH "GLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "GLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "HostItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "HostItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "InspIRCd" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "InspIRCd" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.in +1c
.ti -1c
+.RI "void \fBMakeLowerMap\fP ()"
+.br
+.ti -1c
.RI "\fBstd::string\fP \fBGetRevision\fP ()"
.br
.ti -1c
.ti -1c
.RI "time_t \fBstartup_time\fP"
.br
+.ti -1c
+.RI "\fBModeParser\fP * \fBModeGrok\fP"
+.br
+.ti -1c
+.RI "CommandParser * \fBParser\fP"
+.br
+.ti -1c
+.RI "\fBSocketEngine\fP * \fBSE\fP"
+.br
+.ti -1c
+.RI "\fBserverstats\fP * \fBstats\fP"
+.br
.in -1c
.SS "Private Member Functions"
.in -1c
.SH "Detailed Description"
.PP
-Definition at line 95 of file inspircd.h.
+Definition at line 99 of file inspircd.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "InspIRCd::InspIRCd (int argc, char ** argv)"
Referenced by Server::GetVersion().
.SS "bool InspIRCd::LoadModule (const char * filename)"
.PP
+.SS "void InspIRCd::MakeLowerMap ()"
+.PP
.SS "char* InspIRCd::ModuleError ()"
.PP
.SS "int InspIRCd::Run ()"
.PP
.SH "Member Data Documentation"
.PP
+.SS "\fBModeParser\fP* \fBInspIRCd::ModeGrok\fP"
+.PP
+Definition at line 109 of file inspircd.h.
+.PP
+Referenced by Server::SendMode().
.SS "char \fBInspIRCd::MODERR\fP[MAXBUF]\fC [private]\fP"
.PP
-Definition at line 99 of file inspircd.h.
+Definition at line 103 of file inspircd.h.
+.SS "CommandParser* \fBInspIRCd::Parser\fP"
+.PP
+Definition at line 110 of file inspircd.h.
+.PP
+Referenced by Server::AddCommand(), Server::CallCommandHandler(), force_nickchange(), and Server::IsValidModuleCommand().
+.SS "\fBSocketEngine\fP* \fBInspIRCd::SE\fP"
+.PP
+Definition at line 111 of file inspircd.h.
+.PP
+Referenced by AddClient(), InspSocket::InspSocket(), kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo().
.SS "time_t \fBInspIRCd::startup_time\fP"
.PP
-Definition at line 104 of file inspircd.h.
+Definition at line 108 of file inspircd.h.
+.SS "\fBserverstats\fP* \fBInspIRCd::stats\fP"
+.PP
+Definition at line 112 of file inspircd.h.
+.PP
+Referenced by force_nickchange(), and FullConnectUser().
.SH "Author"
.PP
-.TH "InspSocket" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "InspSocket" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
.RI "\fIThe destructor may implicitly call \fBOnClose()\fP, and will close() and shutdown() the file descriptor used for this socket. \fP"
.in -1c
+.SS "Private Member Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBFlushWriteBuffer\fP ()"
+.br
+.RI "\fIFlushes the write buffer. \fP"
+.in -1c
.SS "Private Attributes"
.in +1c
.br
.RI "\fIThis value is true if the socket has timed out. \fP"
.ti -1c
-.RI "char \fBibuf\fP [16384]"
+.RI "char \fBibuf\fP [65535]"
.br
.RI "\fISocket input buffer, used by read(). \fP"
.ti -1c
+.RI "\fBstd::string\fP \fBBuffer\fP"
+.br
+.RI "\fIThe output buffer for this socket. \fP"
+.ti -1c
.RI "\fBstd::string\fP \fBIP\fP"
.br
.RI "\fIThe IP address being connected to stored in string form for easy retrieval by accessors. \fP"
.PP
The default constructor does nothing and should not be used.
.PP
-Definition at line 48 of file socket.cpp.
+Definition at line 45 of file socket.cpp.
.PP
References I_DISCONNECTED, and state.
.PP
.nf
-49 {
-50 this->state = I_DISCONNECTED;
-51 }
+46 {
+47 this->state = I_DISCONNECTED;
+48 }
.fi
.PP
.SS "InspSocket::InspSocket (int newfd, char * ip)"
.PP
The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state.
.PP
-Definition at line 53 of file socket.cpp.
+Definition at line 50 of file socket.cpp.
.PP
-References SocketEngine::AddFd(), fd, I_CONNECTED, IP, state, and X_ESTAB_MODULE.
+References SocketEngine::AddFd(), fd, I_CONNECTED, IP, InspIRCd::SE, state, and X_ESTAB_MODULE.
.PP
.nf
-54 {
-55 this->fd = newfd;
-56 this->state = I_CONNECTED;
-57 this->IP = ip;
-58 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-59 socket_ref[this->fd] = this;
-60 }
+51 {
+52 this->fd = newfd;
+53 this->state = I_CONNECTED;
+54 this->IP = ip;
+55 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+56 socket_ref[this->fd] = this;
+57 }
.fi
.PP
.SS "InspSocket::InspSocket (\fBstd::string\fP host, int port, bool listening, unsigned long maxtime)"
.PP
.PP
-Definition at line 62 of file socket.cpp.
+Definition at line 59 of file socket.cpp.
.PP
-References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), state, timeout, timeout_end, and X_ESTAB_MODULE.
+References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), InspIRCd::SE, state, timeout, timeout_end, and X_ESTAB_MODULE.
.PP
.nf
-63 {
-64 if (listening) {
-65 if ((this->fd = OpenTCPSocket()) == ERROR)
-66 {
-67 this->fd = -1;
-68 this->state = I_ERROR;
-69 this->OnError(I_ERR_SOCKET);
-70 log(DEBUG,'OpenTCPSocket() error');
-71 return;
-72 }
-73 else
-74 {
-75 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
-76 {
-77 this->Close();
-78 this->fd = -1;
-79 this->state = I_ERROR;
-80 this->OnError(I_ERR_BIND);
-81 log(DEBUG,'BindSocket() error %s',strerror(errno));
-82 return;
-83 }
-84 else
-85 {
-86 this->state = I_LISTENING;
-87 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-88 socket_ref[this->fd] = this;
-89 log(DEBUG,'New socket now in I_LISTENING state');
-90 return;
-91 }
-92 }
-93 } else {
-94 char* ip;
-95 this->host = host;
-96 hostent* hoste = gethostbyname(host.c_str());
-97 if (!hoste) {
-98 ip = (char*)host.c_str();
-99 } else {
-100 struct in_addr* ia = (in_addr*)hoste->h_addr;
-101 ip = inet_ntoa(*ia);
-102 }
-103
-104 this->IP = ip;
-105
-106 timeout_end = time(NULL)+maxtime;
-107 timeout = false;
-108 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-109 {
-110 this->state = I_ERROR;
-111 this->OnError(I_ERR_SOCKET);
-112 return;
-113 }
-114 this->port = port;
-115 inet_aton(ip,&addy);
-116 addr.sin_family = AF_INET;
-117 addr.sin_addr = addy;
-118 addr.sin_port = htons(this->port);
-119
-120 int flags;
-121 flags = fcntl(this->fd, F_GETFL, 0);
-122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
-123
-124 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
-125 {
-126 if (errno != EINPROGRESS)
-127 {
-128 this->Close();
-129 this->OnError(I_ERR_CONNECT);
-130 this->state = I_ERROR;
-131 return;
-132 }
-133 }
-134 this->state = I_CONNECTING;
-135 SE->AddFd(this->fd,false,X_ESTAB_MODULE);
-136 socket_ref[this->fd] = this;
-137 return;
-138 }
-139 }
+60 {
+61 if (listening) {
+62 if ((this->fd = OpenTCPSocket()) == ERROR)
+63 {
+64 this->fd = -1;
+65 this->state = I_ERROR;
+66 this->OnError(I_ERR_SOCKET);
+67 log(DEBUG,'OpenTCPSocket() error');
+68 return;
+69 }
+70 else
+71 {
+72 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
+73 {
+74 this->Close();
+75 this->fd = -1;
+76 this->state = I_ERROR;
+77 this->OnError(I_ERR_BIND);
+78 log(DEBUG,'BindSocket() error %s',strerror(errno));
+79 return;
+80 }
+81 else
+82 {
+83 this->state = I_LISTENING;
+84 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+85 socket_ref[this->fd] = this;
+86 log(DEBUG,'New socket now in I_LISTENING state');
+87 return;
+88 }
+89 }
+90 } else {
+91 char* ip;
+92 this->host = host;
+93 hostent* hoste = gethostbyname(host.c_str());
+94 if (!hoste) {
+95 ip = (char*)host.c_str();
+96 } else {
+97 struct in_addr* ia = (in_addr*)hoste->h_addr;
+98 ip = inet_ntoa(*ia);
+99 }
+100
+101 this->IP = ip;
+102
+103 timeout_end = time(NULL)+maxtime;
+104 timeout = false;
+105 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+106 {
+107 this->state = I_ERROR;
+108 this->OnError(I_ERR_SOCKET);
+109 return;
+110 }
+111 this->port = port;
+112 inet_aton(ip,&addy);
+113 addr.sin_family = AF_INET;
+114 addr.sin_addr = addy;
+115 addr.sin_port = htons(this->port);
+116
+117 int flags;
+118 flags = fcntl(this->fd, F_GETFL, 0);
+119 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
+120
+121 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
+122 {
+123 if (errno != EINPROGRESS)
+124 {
+125 this->Close();
+126 this->OnError(I_ERR_CONNECT);
+127 this->state = I_ERROR;
+128 return;
+129 }
+130 }
+131 this->state = I_CONNECTING;
+132 ServerInstance->SE->AddFd(this->fd,false,X_ESTAB_MODULE);
+133 socket_ref[this->fd] = this;
+134 return;
+135 }
+136 }
.fi
.PP
.SS "InspSocket::~InspSocket ()\fC [virtual]\fP"
.PP
The destructor may implicitly call \fBOnClose()\fP, and will close() and shutdown() the file descriptor used for this socket.
.PP
-Definition at line 272 of file socket.cpp.
+Definition at line 271 of file socket.cpp.
.PP
References Close().
.PP
.nf
-273 {
-274 this->Close();
-275 }
+272 {
+273 this->Close();
+274 }
.fi
.PP
.SH "Member Function Documentation"
.PP
This method causes the socket to close, and may also be triggered by other methods such as OnTimeout and OnError.
.PP
-Definition at line 141 of file socket.cpp.
+Definition at line 138 of file socket.cpp.
.PP
References fd, and OnClose().
.PP
Referenced by InspSocket(), and ~InspSocket().
.PP
.nf
-142 {
-143 if (this->fd != -1)
-144 {
-145 this->OnClose();
-146 shutdown(this->fd,2);
-147 close(this->fd);
-148 socket_ref[this->fd] = NULL;
-149 this->fd = -1;
-150 }
-151 }
+139 {
+140 if (this->fd != -1)
+141 {
+142 this->OnClose();
+143 shutdown(this->fd,2);
+144 close(this->fd);
+145 socket_ref[this->fd] = NULL;
+146 this->fd = -1;
+147 }
+148 }
+.fi
+.PP
+.SS "void InspSocket::FlushWriteBuffer ()\fC [private]\fP"
+.PP
+Flushes the write buffer.
+.PP
+Definition at line 181 of file socket.cpp.
+.PP
+References Buffer.
+.PP
+Referenced by Timeout(), and Write().
+.PP
+.nf
+182 {
+183 int result = 0;
+184 if (this->Buffer.length())
+185 {
+186 result = send(this->fd,this->Buffer.c_str(),this->Buffer.length(),0);
+187 if (result > 0)
+188 {
+189 /* If we wrote some, advance the buffer forwards */
+190 char* n = (char*)this->Buffer.c_str();
+191 n += result;
+192 this->Buffer = n;
+193 }
+194 }
+195 }
.fi
.PP
.SS "int InspSocket::GetFd ()"
.PP
This method returns the socket's file descriptor as assigned by the operating system, or -1 if no descriptor has been assigned.
.PP
-Definition at line 259 of file socket.cpp.
+Definition at line 258 of file socket.cpp.
.PP
References fd.
.PP
.nf
-260 {
-261 return this->fd;
-262 }
+259 {
+260 return this->fd;
+261 }
.fi
.PP
.SS "\fBstd::string\fP InspSocket::GetIP ()"
.PP
Returns the IP address associated with this connection, or an empty string if no IP address exists.
.PP
-Definition at line 153 of file socket.cpp.
+Definition at line 150 of file socket.cpp.
.PP
References IP.
.PP
.nf
-154 {
-155 return this->IP;
-156 }
+151 {
+152 return this->IP;
+153 }
.fi
.PP
.SS "\fBInspSocketState\fP InspSocket::GetState ()"
.PP
Returns the current socket state.
.PP
-Definition at line 254 of file socket.cpp.
+Definition at line 253 of file socket.cpp.
.PP
References state.
.PP
.nf
-255 {
-256 return this->state;
-257 }
+254 {
+255 return this->state;
+256 }
.fi
.PP
.SS "void InspSocket::OnClose ()\fC [virtual]\fP"
.PP
Please note that this means OnClose will be called alongside \fBOnError()\fP, \fBOnTimeout()\fP, and \fBClose()\fP, and also when cancelling a listening socket by calling the destructor indirectly.
.PP
-Definition at line 270 of file socket.cpp.
+Definition at line 269 of file socket.cpp.
.PP
Referenced by Close().
.PP
.nf
-270 { return; }
+269 { return; }
.fi
.PP
.SS "bool InspSocket::OnConnected ()\fC [virtual]\fP"
.PP
.PP
-Definition at line 264 of file socket.cpp.
+Definition at line 263 of file socket.cpp.
.PP
Referenced by Poll().
.PP
.nf
-264 { return true; }
+263 { return true; }
.fi
.PP
.SS "bool InspSocket::OnDataReady ()\fC [virtual]\fP"
.PP
.PP
-Definition at line 268 of file socket.cpp.
+Definition at line 267 of file socket.cpp.
.PP
Referenced by Poll().
.PP
.nf
-268 { return true; }
+267 { return true; }
.fi
.PP
.SS "int InspSocket::OnDisconnect ()\fC [virtual]\fP"
.PP
When an established connection is terminated, the OnDisconnect method is triggered.
.PP
-Definition at line 266 of file socket.cpp.
+Definition at line 265 of file socket.cpp.
.PP
.nf
-266 { return 0; }
+265 { return 0; }
.fi
.PP
.SS "void InspSocket::OnError (\fBInspSocketError\fP e)\fC [virtual]\fP"
.PP
.PP
-Definition at line 265 of file socket.cpp.
+Definition at line 264 of file socket.cpp.
.PP
Referenced by InspSocket(), and Timeout().
.PP
.nf
-265 { return; }
+264 { return; }
.fi
.PP
.SS "int InspSocket::OnIncomingConnection (int newfd, char * ip)\fC [virtual]\fP"
.PP
Once you have done this, you can then associate the new socket with the core using \fBServer::AddSocket()\fP.
.PP
-Definition at line 267 of file socket.cpp.
+Definition at line 266 of file socket.cpp.
.PP
Referenced by Poll().
.PP
.nf
-267 { return 0; }
+266 { return 0; }
.fi
.PP
.SS "void InspSocket::OnTimeout ()\fC [virtual]\fP"
.PP
The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed.
.PP
-Definition at line 269 of file socket.cpp.
+Definition at line 268 of file socket.cpp.
.PP
Referenced by Timeout().
.PP
.nf
-269 { return; }
+268 { return; }
.fi
.PP
.SS "bool InspSocket::Poll ()"
.PP
When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change.
.PP
-Definition at line 217 of file socket.cpp.
+Definition at line 216 of file socket.cpp.
.PP
-References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), SetState(), and X_ESTAB_MODULE.
+References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), InspIRCd::SE, SetState(), and X_ESTAB_MODULE.
.PP
.nf
-218 {
-219 int incoming = -1;
-220
-221 switch (this->state)
-222 {
-223 case I_CONNECTING:
-224 this->SetState(I_CONNECTED);
-225 /* Our socket was in write-state, so delete it and re-add it
-226 * in read-state.
-227 */
-228 SE->DelFd(this->fd);
-229 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-230 return this->OnConnected();
-231 break;
-232 case I_LISTENING:
-233 length = sizeof (client);
-234 incoming = accept (this->fd, (sockaddr*)&client,&length);
-235 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
-236 return true;
-237 break;
-238 case I_CONNECTED:
-239 return this->OnDataReady();
-240 break;
-241 default:
-242 break;
-243 }
-244
-245 return true;
-246 }
+217 {
+218 int incoming = -1;
+219
+220 switch (this->state)
+221 {
+222 case I_CONNECTING:
+223 this->SetState(I_CONNECTED);
+224 /* Our socket was in write-state, so delete it and re-add it
+225 * in read-state.
+226 */
+227 ServerInstance->SE->DelFd(this->fd);
+228 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+229 return this->OnConnected();
+230 break;
+231 case I_LISTENING:
+232 length = sizeof (client);
+233 incoming = accept (this->fd, (sockaddr*)&client,&length);
+234 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
+235 return true;
+236 break;
+237 case I_CONNECTED:
+238 return this->OnDataReady();
+239 break;
+240 default:
+241 break;
+242 }
+243
+244 return true;
+245 }
.fi
.PP
.SS "char * InspSocket::Read ()\fC [virtual]\fP"
.PP
Reads all pending bytes from the socket into a char* array which can be up to 16 kilobytes in length.
.PP
-Definition at line 158 of file socket.cpp.
+Definition at line 155 of file socket.cpp.
.PP
References DEBUG, ibuf, and log().
.PP
.nf
-159 {
-160 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
-161 if (n > 0)
-162 {
-163 ibuf[n] = 0;
-164 return ibuf;
-165 }
-166 else
-167 {
-168 log(DEBUG,'EOF or error on socket');
-169 return NULL;
-170 }
-171 }
+156 {
+157 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
+158 if (n > 0)
+159 {
+160 ibuf[n] = 0;
+161 return ibuf;
+162 }
+163 else
+164 {
+165 log(DEBUG,'EOF or error on socket');
+166 return NULL;
+167 }
+168 }
.fi
.PP
.SS "void InspSocket::SetState (\fBInspSocketState\fP s)"
.PP
The core uses this to change socket states, and you should not call it directly.
.PP
-Definition at line 248 of file socket.cpp.
+Definition at line 247 of file socket.cpp.
.PP
References DEBUG, log(), and state.
.PP
Referenced by Poll().
.PP
.nf
-249 {
-250 log(DEBUG,'Socket state change');
-251 this->state = s;
-252 }
+248 {
+249 log(DEBUG,'Socket state change');
+250 this->state = s;
+251 }
.fi
.PP
.SS "bool InspSocket::Timeout (time_t current)"
.PP
.PP
-Definition at line 200 of file socket.cpp.
+Definition at line 197 of file socket.cpp.
.PP
-References I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end.
+References FlushWriteBuffer(), I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end.
.PP
.nf
-201 {
-202 if ((this->state == I_CONNECTING) && (current > timeout_end))
-203 {
-204 // for non-listening sockets, the timeout can occur
-205 // which causes termination of the connection after
-206 // the given number of seconds without a successful
-207 // connection.
-208 this->OnTimeout();
-209 this->OnError(I_ERR_TIMEOUT);
-210 timeout = true;
-211 this->state = I_ERROR;
-212 return true;
-213 }
-214 return false;
-215 }
+198 {
+199 if ((this->state == I_CONNECTING) && (current > timeout_end))
+200 {
+201 // for non-listening sockets, the timeout can occur
+202 // which causes termination of the connection after
+203 // the given number of seconds without a successful
+204 // connection.
+205 this->OnTimeout();
+206 this->OnError(I_ERR_TIMEOUT);
+207 timeout = true;
+208 this->state = I_ERROR;
+209 return true;
+210 }
+211 if (this->Buffer.length())
+212 this->FlushWriteBuffer();
+213 return false;
+214 }
.fi
.PP
.SS "int InspSocket::Write (\fBstd::string\fP data)\fC [virtual]\fP"
.PP
.PP
-Definition at line 177 of file socket.cpp.
+Definition at line 174 of file socket.cpp.
+.PP
+References Buffer, and FlushWriteBuffer().
.PP
.nf
-178 {
-179 char* d = (char*)data.c_str();
-180 unsigned int written = 0;
-181 int n = 0;
-182 int s = data.length();
-183 while ((written < data.length()) && (n >= 0))
-184 {
-185 n = send(this->fd,d,s,0);
-186 if (n > 0)
-187 {
-188 // If we didnt write everything, advance
-189 // the pointers so that when we retry
-190 // the next time around the loop, we try
-191 // to write what we failed to write before.
-192 written += n;
-193 s -= n;
-194 d += n;
-195 }
-196 }
-197 return written;
-198 }
+175 {
+176 this->Buffer = this->Buffer + data;
+177 this->FlushWriteBuffer();
+178 return data.length();
+179 }
.fi
.PP
.SH "Member Data Documentation"
Definition at line 84 of file socket.h.
.PP
Referenced by InspSocket().
+.SS "\fBstd::string\fP \fBInspSocket::Buffer\fP\fC [private]\fP"
+.PP
+The output buffer for this socket.
+.PP
+Definition at line 111 of file socket.h.
+.PP
+Referenced by FlushWriteBuffer(), and Write().
.SS "sockaddr_in \fBInspSocket::client\fP\fC [private]\fP"
.PP
Client sockaddr structure used by accept().
.PP
-Definition at line 119 of file socket.h.
+Definition at line 124 of file socket.h.
.PP
Referenced by Poll().
.SS "int \fBInspSocket::fd\fP\fC [private]\fP"
The hostname connected to.
.PP
Definition at line 59 of file socket.h.
-.SS "char \fBInspSocket::ibuf\fP[16384]\fC [private]\fP"
+.SS "char \fBInspSocket::ibuf\fP[65535]\fC [private]\fP"
.PP
Socket input buffer, used by read().
.PP
-The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 16k, this buffer is just designed to be temporary storage. space.
+The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 64k, this buffer is just designed to be temporary storage. space.
.PP
Definition at line 106 of file socket.h.
.PP
.PP
The IP address being connected to stored in string form for easy retrieval by accessors.
.PP
-Definition at line 113 of file socket.h.
+Definition at line 118 of file socket.h.
.PP
Referenced by GetIP(), and InspSocket().
.SS "socklen_t \fBInspSocket::length\fP\fC [private]\fP"
.PP
Used by accept() to indicate the sizes of the sockaddr_in structures.
.PP
-Definition at line 131 of file socket.h.
+Definition at line 136 of file socket.h.
.PP
Referenced by Poll().
.SS "int \fBInspSocket::port\fP\fC [private]\fP"
.PP
\fBServer\fP sockaddr structure used by accept().
.PP
-Definition at line 125 of file socket.h.
+Definition at line 130 of file socket.h.
.SS "\fBInspSocketState\fP \fBInspSocket::state\fP\fC [private]\fP"
.PP
The state for this socket, either listening, connecting, connected or error.
-.TH "InviteItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "InviteItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "Invited" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Invited" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.in +1c
.ti -1c
-.RI "char \fBchannel\fP [CHANMAX]"
+.RI "\fBirc::string\fP \fBchannel\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
Holds a channel name to which a user has been invited.
.PP
-Definition at line 39 of file users.h.
+Definition at line 43 of file users.h.
.SH "Member Data Documentation"
.PP
-.SS "char \fBInvited::channel\fP[CHANMAX]"
+.SS "\fBirc::string\fP \fBInvited::channel\fP"
.PP
-Definition at line 42 of file users.h.
+Definition at line 46 of file users.h.
.PP
Referenced by userrec::InviteTo().
-.TH "KLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "KLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "ModeParameter" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ModeParameter" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "Module" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Module" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
All modules must inherit from this class, its methods will be called when irc server events occur. class inherited from module must be instantiated by the \fBModuleFactory\fP class (see relevent section) for the plugin to be initialised.
.PP
-Definition at line 254 of file modules.h.
+Definition at line 272 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Module::Module (\fBServer\fP * Me)"
.PP
.PP
-Definition at line 220 of file modules.cpp.
+Definition at line 219 of file modules.cpp.
.PP
.nf
-220 { }
+219 { }
.fi
.PP
.SS "Module::~Module ()\fC [virtual]\fP"
.PP
Default destructor destroys a module class.
.PP
-Definition at line 221 of file modules.cpp.
+Definition at line 220 of file modules.cpp.
.PP
.nf
-221 { }
+220 { }
.fi
.PP
.SH "Member Function Documentation"
.PP
The method should return a \fBVersion\fP object with its version information assigned via \fBVersion::Version\fP
.PP
-Definition at line 232 of file modules.cpp.
+Definition at line 231 of file modules.cpp.
.PP
References VF_VENDOR.
.PP
.nf
-232 { return Version(1,0,0,0,VF_VENDOR); }
+231 { return Version(1,0,0,0,VF_VENDOR); }
.fi
.PP
.SS "void Module::On005Numeric (\fBstd::string\fP & output)\fC [virtual]\fP"
.PP
.PP
-Definition at line 242 of file modules.cpp.
+Definition at line 241 of file modules.cpp.
.PP
.nf
-242 { };
+241 { };
.fi
.PP
.SS "int Module::OnAccessCheck (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel, int access_type)\fC [virtual]\fP"
.PP
.PP
-Definition at line 241 of file modules.cpp.
+Definition at line 240 of file modules.cpp.
.PP
References ACR_DEFAULT.
.PP
.nf
-241 { return ACR_DEFAULT; };
+240 { return ACR_DEFAULT; };
.fi
.PP
.SS "int Module::OnAddBan (\fBuserrec\fP * source, \fBchanrec\fP * channel, \fBstd::string\fP banmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 267 of file modules.cpp.
+Definition at line 266 of file modules.cpp.
.PP
.nf
-267 { return 0; };
+266 { return 0; };
.fi
.PP
.SS "void Module::OnAddELine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 293 of file modules.cpp.
+Definition at line 292 of file modules.cpp.
.PP
.nf
-293 { };
+292 { };
.fi
.PP
.SS "void Module::OnAddGLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 289 of file modules.cpp.
+Definition at line 288 of file modules.cpp.
.PP
.nf
-289 { };
+288 { };
.fi
.PP
.SS "void Module::OnAddKLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 291 of file modules.cpp.
+Definition at line 290 of file modules.cpp.
.PP
.nf
-291 { };
+290 { };
.fi
.PP
.SS "void Module::OnAddQLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP nickmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 292 of file modules.cpp.
+Definition at line 291 of file modules.cpp.
.PP
.nf
-292 { };
+291 { };
.fi
.PP
.SS "void Module::OnAddZLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP ipmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 290 of file modules.cpp.
+Definition at line 289 of file modules.cpp.
.PP
.nf
-290 { };
+289 { };
.fi
.PP
.SS "void Module::OnBackgroundTimer (time_t curtime)\fC [virtual]\fP"
.PP
.PP
-Definition at line 246 of file modules.cpp.
+Definition at line 245 of file modules.cpp.
.PP
.nf
-246 { };
+245 { };
.fi
.PP
.SS "void Module::OnChangeHost (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP"
.PP
.PP
-Definition at line 287 of file modules.cpp.
+Definition at line 286 of file modules.cpp.
.PP
.nf
-287 { };
+286 { };
.fi
.PP
.SS "int Module::OnChangeLocalUserGECOS (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP"
.PP
.PP
-Definition at line 260 of file modules.cpp.
+Definition at line 259 of file modules.cpp.
.PP
.nf
-260 { return 0; };
+259 { return 0; };
.fi
.PP
.SS "int Module::OnChangeLocalUserHost (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP"
.PP
.PP
-Definition at line 259 of file modules.cpp.
+Definition at line 258 of file modules.cpp.
.PP
.nf
-259 { return 0; };
+258 { return 0; };
.fi
.PP
.SS "void Module::OnChangeName (\fBuserrec\fP * user, \fBstd::string\fP gecos)\fC [virtual]\fP"
.PP
.PP
-Definition at line 288 of file modules.cpp.
+Definition at line 287 of file modules.cpp.
.PP
.nf
-288 { };
+287 { };
.fi
.PP
.SS "int Module::OnCheckBan (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP"
.PP
.PP
-Definition at line 257 of file modules.cpp.
+Definition at line 256 of file modules.cpp.
.PP
.nf
-257 { return 0; };
+256 { return 0; };
.fi
.PP
.SS "int Module::OnCheckInvite (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP"
.PP
.PP
-Definition at line 254 of file modules.cpp.
+Definition at line 253 of file modules.cpp.
.PP
.nf
-254 { return 0; };
+253 { return 0; };
.fi
.PP
.SS "int Module::OnCheckKey (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP keygiven)\fC [virtual]\fP"
.PP
.PP
-Definition at line 255 of file modules.cpp.
+Definition at line 254 of file modules.cpp.
.PP
.nf
-255 { return 0; };
+254 { return 0; };
.fi
.PP
.SS "int Module::OnCheckLimit (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP"
.PP
.PP
-Definition at line 256 of file modules.cpp.
+Definition at line 255 of file modules.cpp.
.PP
.nf
-256 { return 0; };
+255 { return 0; };
.fi
.PP
.SS "bool Module::OnCheckReady (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 249 of file modules.cpp.
+Definition at line 248 of file modules.cpp.
.PP
.nf
-249 { return true; };
+248 { return true; };
.fi
.PP
.SS "void Module::OnCleanup (int target_type, void * item)\fC [virtual]\fP"
.PP
.PP
-Definition at line 299 of file modules.cpp.
+Definition at line 298 of file modules.cpp.
.PP
.nf
-299 { };
+298 { };
.fi
.PP
.SS "void Module::OnDecodeMetaData (int target_type, void * target, \fBstd::string\fP extname, \fBstd::string\fP extdata)\fC [virtual]\fP"
.PP
.PP
-Definition at line 284 of file modules.cpp.
+Definition at line 283 of file modules.cpp.
.PP
.nf
-284 { };
+283 { };
.fi
.PP
.SS "int Module::OnDelBan (\fBuserrec\fP * source, \fBchanrec\fP * channel, \fBstd::string\fP banmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 268 of file modules.cpp.
+Definition at line 267 of file modules.cpp.
.PP
.nf
-268 { return 0; };
+267 { return 0; };
.fi
.PP
.SS "void Module::OnDelELine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 298 of file modules.cpp.
+Definition at line 297 of file modules.cpp.
.PP
.nf
-298 { };
+297 { };
.fi
.PP
.SS "void Module::OnDelGLine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 294 of file modules.cpp.
+Definition at line 293 of file modules.cpp.
.PP
.nf
-294 { };
+293 { };
.fi
.PP
.SS "void Module::OnDelKLine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 296 of file modules.cpp.
+Definition at line 295 of file modules.cpp.
.PP
.nf
-296 { };
+295 { };
.fi
.PP
.SS "void Module::OnDelQLine (\fBuserrec\fP * source, \fBstd::string\fP nickmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 297 of file modules.cpp.
+Definition at line 296 of file modules.cpp.
.PP
.nf
-297 { };
+296 { };
.fi
.PP
.SS "void Module::OnDelZLine (\fBuserrec\fP * source, \fBstd::string\fP ipmask)\fC [virtual]\fP"
.PP
.PP
-Definition at line 295 of file modules.cpp.
+Definition at line 294 of file modules.cpp.
.PP
.nf
-295 { };
+294 { };
.fi
.PP
.SS "void Module::OnEvent (\fBEvent\fP * event)\fC [virtual]\fP"
.PP
.PP
-Definition at line 262 of file modules.cpp.
+Definition at line 261 of file modules.cpp.
.PP
.nf
-262 { return; };
+261 { return; };
.fi
.PP
.SS "int Module::OnExtendedMode (\fBuserrec\fP * user, void * target, char modechar, int type, bool mode_on, \fBstring_list\fP & params)\fC [virtual]\fP"
.PP
.PP
-Definition at line 230 of file modules.cpp.
+Definition at line 229 of file modules.cpp.
.PP
.nf
-230 { return false; }
+229 { return false; }
.fi
.PP
.SS "void Module::OnGetServerDescription (\fBstd::string\fP servername, \fBstd::string\fP & description)\fC [virtual]\fP"
.PP
.PP
-Definition at line 278 of file modules.cpp.
+Definition at line 277 of file modules.cpp.
.PP
.nf
-278 { };
+277 { };
.fi
.PP
.SS "void Module::OnGlobalConnect (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 266 of file modules.cpp.
+Definition at line 265 of file modules.cpp.
.PP
.nf
-266 { };
+265 { };
.fi
.PP
.SS "void Module::OnGlobalOper (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 265 of file modules.cpp.
+Definition at line 264 of file modules.cpp.
.PP
.nf
-265 { };
+264 { };
.fi
.PP
.SS "void Module::OnInfo (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 234 of file modules.cpp.
+Definition at line 233 of file modules.cpp.
.PP
.nf
-234 { };
+233 { };
.fi
.PP
.SS "int Module::OnKill (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBstd::string\fP reason)\fC [virtual]\fP"
.PP
.PP
-Definition at line 243 of file modules.cpp.
+Definition at line 242 of file modules.cpp.
.PP
.nf
-243 { return 0; };
+242 { return 0; };
.fi
.PP
.SS "void Module::OnLoadModule (\fBModule\fP * mod, \fBstd::string\fP name)\fC [virtual]\fP"
.PP
.PP
-Definition at line 244 of file modules.cpp.
+Definition at line 243 of file modules.cpp.
.PP
.nf
-244 { };
+243 { };
.fi
.PP
.SS "int Module::OnLocalTopicChange (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP topic)\fC [virtual]\fP"
.PP
.PP
-Definition at line 261 of file modules.cpp.
+Definition at line 260 of file modules.cpp.
.PP
.nf
-261 { return 0; };
+260 { return 0; };
.fi
.PP
.SS "void Module::OnMode (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
.PP
-Definition at line 231 of file modules.cpp.
+Definition at line 230 of file modules.cpp.
.PP
.nf
-231 { };
+230 { };
.fi
.PP
.SS "void Module::OnOper (\fBuserrec\fP * user, \fBstd::string\fP opertype)\fC [virtual]\fP"
.PP
.PP
-Definition at line 233 of file modules.cpp.
+Definition at line 232 of file modules.cpp.
.PP
.nf
-233 { };
+232 { };
.fi
.PP
.SS "int Module::OnOperCompare (\fBstd::string\fP password, \fBstd::string\fP input)\fC [virtual]\fP"
.PP
.PP
-Definition at line 264 of file modules.cpp.
+Definition at line 263 of file modules.cpp.
.PP
.nf
-264 { return 0; };
+263 { return 0; };
.fi
.PP
.SS "void Module::OnPostLocalTopicChange (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP topic)\fC [virtual]\fP"
.PP
.PP
-Definition at line 277 of file modules.cpp.
+Definition at line 276 of file modules.cpp.
.PP
.nf
-277 { };
+276 { };
.fi
.PP
.SS "int Module::OnPreCommand (\fBstd::string\fP command, char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 248 of file modules.cpp.
+Definition at line 247 of file modules.cpp.
.PP
.nf
-248 { return 0; };
+247 { return 0; };
.fi
.PP
.SS "int Module::OnRawMode (\fBuserrec\fP * user, \fBchanrec\fP * chan, char mode, \fBstd::string\fP param, bool adding, int pcnt)\fC [virtual]\fP"
.PP
.PP
-Definition at line 253 of file modules.cpp.
+Definition at line 252 of file modules.cpp.
.PP
.nf
-253 { return 0; };
+252 { return 0; };
.fi
.PP
.SS "void Module::OnRawSocketAccept (int fd, \fBstd::string\fP ip, int localport)\fC [virtual]\fP"
.PP
.PP
-Definition at line 269 of file modules.cpp.
+Definition at line 268 of file modules.cpp.
.PP
.nf
-269 { };
+268 { };
.fi
.PP
.SS "void Module::OnRawSocketClose (int fd)\fC [virtual]\fP"
.PP
.PP
-Definition at line 271 of file modules.cpp.
+Definition at line 270 of file modules.cpp.
+.PP
+Referenced by kill_link(), and kill_link_silent().
.PP
.nf
-271 { };
+270 { };
.fi
.PP
.SS "int Module::OnRawSocketRead (int fd, char * buffer, unsigned int count, int & readresult)\fC [virtual]\fP"
.PP
.PP
-Definition at line 272 of file modules.cpp.
+Definition at line 271 of file modules.cpp.
.PP
.nf
-272 { return 0; };
+271 { return 0; };
.fi
.PP
.SS "int Module::OnRawSocketWrite (int fd, char * buffer, int count)\fC [virtual]\fP"
.PP
.PP
-Definition at line 270 of file modules.cpp.
+Definition at line 269 of file modules.cpp.
.PP
.nf
-270 { return 0; };
+269 { return 0; };
.fi
.PP
.SS "void Module::OnRehash (\fBstd::string\fP parameter)\fC [virtual]\fP"
.PP
.PP
-Definition at line 227 of file modules.cpp.
+Definition at line 226 of file modules.cpp.
.PP
.nf
-227 { }
+226 { }
.fi
.PP
.SS "void Module::OnRemoteKill (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBstd::string\fP reason)\fC [virtual]\fP"
.PP
.PP
-Definition at line 275 of file modules.cpp.
+Definition at line 274 of file modules.cpp.
.PP
.nf
-275 { };
+274 { };
.fi
.PP
.SS "char * Module::OnRequest (\fBRequest\fP * request)\fC [virtual]\fP"
.PP
.PP
-Definition at line 263 of file modules.cpp.
+Definition at line 262 of file modules.cpp.
.PP
Referenced by Request::Send().
.PP
.nf
-263 { return NULL; };
+262 { return NULL; };
.fi
.PP
.SS "void Module::OnSendList (\fBuserrec\fP * user, \fBchanrec\fP * channel, char mode)\fC [virtual]\fP"
.PP
.PP
-Definition at line 247 of file modules.cpp.
+Definition at line 246 of file modules.cpp.
.PP
.nf
-247 { };
+246 { };
.fi
.PP
.SS "void Module::OnServerRaw (\fBstd::string\fP & raw, bool inbound, \fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 228 of file modules.cpp.
+Definition at line 227 of file modules.cpp.
.PP
.nf
-228 { }
+227 { }
.fi
.PP
.SS "void Module::OnStats (char symbol)\fC [virtual]\fP"
.PP
.PP
-Definition at line 258 of file modules.cpp.
+Definition at line 257 of file modules.cpp.
.PP
.nf
-258 { };
+257 { };
.fi
.PP
.SS "void Module::OnSyncChannel (\fBchanrec\fP * chan, \fBModule\fP * proto, void * opaque)\fC [virtual]\fP"
.PP
.PP
-Definition at line 280 of file modules.cpp.
+Definition at line 279 of file modules.cpp.
.PP
.nf
-280 { };
+279 { };
.fi
.PP
.SS "void Module::OnSyncChannelMetaData (\fBchanrec\fP * chan, \fBModule\fP * proto, void * opaque, \fBstd::string\fP extname)\fC [virtual]\fP"
.PP
-Definition at line 282 of file modules.cpp.
+Definition at line 281 of file modules.cpp.
.PP
.nf
-282 { };
+281 { };
.fi
.PP
.SS "void Module::OnSyncUser (\fBuserrec\fP * user, \fBModule\fP * proto, void * opaque)\fC [virtual]\fP"
.PP
.PP
-Definition at line 279 of file modules.cpp.
+Definition at line 278 of file modules.cpp.
.PP
.nf
-279 { };
+278 { };
.fi
.PP
.SS "void Module::OnSyncUserMetaData (\fBuserrec\fP * user, \fBModule\fP * proto, void * opaque, \fBstd::string\fP extname)\fC [virtual]\fP"
.PP
-Definition at line 283 of file modules.cpp.
+Definition at line 282 of file modules.cpp.
.PP
.nf
-283 { };
+282 { };
.fi
.PP
.SS "void Module::OnUnloadModule (\fBModule\fP * mod, \fBstd::string\fP name)\fC [virtual]\fP"
.PP
.PP
-Definition at line 245 of file modules.cpp.
+Definition at line 244 of file modules.cpp.
.PP
.nf
-245 { };
+244 { };
.fi
.PP
.SS "void Module::OnUserConnect (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 222 of file modules.cpp.
+Definition at line 221 of file modules.cpp.
.PP
.nf
-222 { }
+221 { }
.fi
.PP
.SS "void Module::OnUserDisconnect (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 224 of file modules.cpp.
+Definition at line 223 of file modules.cpp.
.PP
.nf
-224 { }
+223 { }
.fi
.PP
.SS "void Module::OnUserInvite (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel)\fC [virtual]\fP"
.PP
.PP
-Definition at line 276 of file modules.cpp.
+Definition at line 275 of file modules.cpp.
.PP
.nf
-276 { };
+275 { };
.fi
.PP
.SS "void Module::OnUserJoin (\fBuserrec\fP * user, \fBchanrec\fP * channel)\fC [virtual]\fP"
.PP
.PP
-Definition at line 225 of file modules.cpp.
+Definition at line 224 of file modules.cpp.
.PP
.nf
-225 { }
+224 { }
.fi
.PP
.SS "void Module::OnUserKick (\fBuserrec\fP * source, \fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP reason)\fC [virtual]\fP"
.PP
.PP
-Definition at line 252 of file modules.cpp.
+Definition at line 251 of file modules.cpp.
.PP
.nf
-252 { };
+251 { };
.fi
.PP
.SS "void Module::OnUserMessage (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
.PP
-Definition at line 273 of file modules.cpp.
+Definition at line 272 of file modules.cpp.
.PP
.nf
-273 { };
+272 { };
.fi
.PP
.SS "void Module::OnUserNotice (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
.PP
-Definition at line 274 of file modules.cpp.
+Definition at line 273 of file modules.cpp.
.PP
.nf
-274 { };
+273 { };
.fi
.PP
.SS "void Module::OnUserPart (\fBuserrec\fP * user, \fBchanrec\fP * channel)\fC [virtual]\fP"
.PP
.PP
-Definition at line 226 of file modules.cpp.
+Definition at line 225 of file modules.cpp.
.PP
.nf
-226 { }
+225 { }
.fi
.PP
.SS "void Module::OnUserPostNick (\fBuserrec\fP * user, \fBstd::string\fP oldnick)\fC [virtual]\fP"
.PP
.PP
-Definition at line 240 of file modules.cpp.
+Definition at line 239 of file modules.cpp.
.PP
.nf
-240 { };
+239 { };
.fi
.PP
.SS "int Module::OnUserPreInvite (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel)\fC [virtual]\fP"
.PP
.PP
-Definition at line 236 of file modules.cpp.
+Definition at line 235 of file modules.cpp.
.PP
.nf
-236 { return 0; };
+235 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreJoin (\fBuserrec\fP * user, \fBchanrec\fP * chan, const char * cname)\fC [virtual]\fP"
.PP
.PP
-Definition at line 229 of file modules.cpp.
+Definition at line 228 of file modules.cpp.
.PP
.nf
-229 { return 0; }
+228 { return 0; }
.fi
.PP
.SS "int Module::OnUserPreKick (\fBuserrec\fP * source, \fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP reason)\fC [virtual]\fP"
.PP
.PP
-Definition at line 251 of file modules.cpp.
+Definition at line 250 of file modules.cpp.
.PP
.nf
-251 { return 0; };
+250 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreMessage (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP & text)\fC [virtual]\fP"
.PP
.PP
-Definition at line 237 of file modules.cpp.
+Definition at line 236 of file modules.cpp.
.PP
.nf
-237 { return 0; };
+236 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreNick (\fBuserrec\fP * user, \fBstd::string\fP newnick)\fC [virtual]\fP"
.PP
.PP
-Definition at line 239 of file modules.cpp.
+Definition at line 238 of file modules.cpp.
.PP
.nf
-239 { return 0; };
+238 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreNotice (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP & text)\fC [virtual]\fP"
.PP
.PP
-Definition at line 238 of file modules.cpp.
+Definition at line 237 of file modules.cpp.
.PP
.nf
-238 { return 0; };
+237 { return 0; };
.fi
.PP
.SS "void Module::OnUserQuit (\fBuserrec\fP * user, \fBstd::string\fP message)\fC [virtual]\fP"
.PP
.PP
-Definition at line 223 of file modules.cpp.
+Definition at line 222 of file modules.cpp.
.PP
.nf
-223 { }
+222 { }
.fi
.PP
.SS "void Module::OnUserRegister (\fBuserrec\fP * user)\fC [virtual]\fP"
.PP
.PP
-Definition at line 250 of file modules.cpp.
+Definition at line 249 of file modules.cpp.
.PP
.nf
-250 { };
+249 { };
.fi
.PP
.SS "void Module::OnWallops (\fBuserrec\fP * user, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
.PP
-Definition at line 286 of file modules.cpp.
+Definition at line 285 of file modules.cpp.
.PP
.nf
-286 { };
+285 { };
.fi
.PP
.SS "void Module::OnWhois (\fBuserrec\fP * source, \fBuserrec\fP * dest)\fC [virtual]\fP"
.PP
.PP
-Definition at line 235 of file modules.cpp.
+Definition at line 234 of file modules.cpp.
.PP
.nf
-235 { };
+234 { };
.fi
.PP
.SS "void Module::ProtoSendMetaData (void * opaque, int target_type, void * target, \fBstd::string\fP extname, \fBstd::string\fP extdata)\fC [virtual]\fP"
.PP
.PP
-Definition at line 285 of file modules.cpp.
+Definition at line 284 of file modules.cpp.
.PP
.nf
-285 { };
+284 { };
.fi
.PP
.SS "void Module::ProtoSendMode (void * opaque, int target_type, void * target, \fBstd::string\fP modeline)\fC [virtual]\fP"
.PP
.PP
-Definition at line 281 of file modules.cpp.
+Definition at line 280 of file modules.cpp.
.PP
.nf
-281 { };
+280 { };
.fi
.PP
-.TH "ModuleFactory" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ModuleFactory" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
This is to allow for modules to create many different variants of \fBModule\fP, dependent on architecture, configuration, etc. In most cases, the simple class shown in the example module m_foobar.so will suffice for most modules.
.PP
-Definition at line 1676 of file modules.h.
+Definition at line 1694 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ModuleFactory::ModuleFactory ()\fC [inline]\fP"
.PP
-Definition at line 1679 of file modules.h.
+Definition at line 1697 of file modules.h.
.PP
.nf
-1679 { }
+1697 { }
.fi
.PP
.SS "virtual ModuleFactory::~ModuleFactory ()\fC [inline, virtual]\fP"
.PP
-Definition at line 1680 of file modules.h.
+Definition at line 1698 of file modules.h.
.PP
.nf
-1680 { }
+1698 { }
.fi
.PP
.SH "Member Function Documentation"
-.TH "ModuleMessage" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ModuleMessage" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
The ModuleMessage class is the base class of \fBRequest\fP and \fBEvent\fP This class is used to represent a basic data structure which is passed between modules for safe inter-module communications.
.PP
-Definition at line 143 of file modules.h.
+Definition at line 161 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "virtual ModuleMessage::~ModuleMessage ()\fC [inline, virtual]\fP"
.PP
-Definition at line 149 of file modules.h.
+Definition at line 167 of file modules.h.
.PP
.nf
-149 {};
+167 {};
.fi
.PP
.SH "Member Function Documentation"
-.TH "QLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "QLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "Request" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Request" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
When this class is properly instantiated it may be sent to a module using the \fBSend()\fP method, which will call the given module's OnRequest method with this class as its parameter.
.PP
-Definition at line 157 of file modules.h.
+Definition at line 175 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Request::Request (char * anydata, \fBModule\fP * src, \fBModule\fP * dst)"
.PP
Create a new Request.
.PP
-Definition at line 165 of file modules.cpp.
+Definition at line 164 of file modules.cpp.
.PP
.nf
-165 : data(anydata), source(src), dest(dst) { };
+164 : data(anydata), source(src), dest(dst) { };
.fi
.PP
.SH "Member Function Documentation"
.PP
Fetch the Request data.
.PP
-Definition at line 167 of file modules.cpp.
+Definition at line 166 of file modules.cpp.
.PP
References data.
.PP
.nf
-168 {
-169 return this->data;
-170 }
+167 {
+168 return this->data;
+169 }
.fi
.PP
.SS "\fBModule\fP * Request::GetDest ()"
.PP
Fetch the request destination (should be 'this' in the receiving module).
.PP
-Definition at line 177 of file modules.cpp.
+Definition at line 176 of file modules.cpp.
.PP
References dest.
.PP
.nf
-178 {
-179 return this->dest;
-180 }
+177 {
+178 return this->dest;
+179 }
.fi
.PP
.SS "\fBModule\fP * Request::GetSource ()"
.PP
Fetch the request source.
.PP
-Definition at line 172 of file modules.cpp.
+Definition at line 171 of file modules.cpp.
.PP
References source.
.PP
.nf
-173 {
-174 return this->source;
-175 }
+172 {
+173 return this->source;
+174 }
.fi
.PP
.SS "char * Request::Send ()\fC [virtual]\fP"
.PP
Implements \fBModuleMessage\fP.
.PP
-Definition at line 182 of file modules.cpp.
+Definition at line 181 of file modules.cpp.
.PP
References dest, and Module::OnRequest().
.PP
.nf
-183 {
-184 if (this->dest)
-185 {
-186 return dest->OnRequest(this);
-187 }
-188 else
-189 {
-190 return NULL;
-191 }
-192 }
+182 {
+183 if (this->dest)
+184 {
+185 return dest->OnRequest(this);
+186 }
+187 else
+188 {
+189 return NULL;
+190 }
+191 }
.fi
.PP
.SH "Member Data Documentation"
.PP
This member holds a pointer to arbitary data set by the emitter of the message.
.PP
-Definition at line 162 of file modules.h.
+Definition at line 180 of file modules.h.
.PP
Referenced by GetData().
.SS "\fBModule\fP* \fBRequest::dest\fP\fC [protected]\fP"
.PP
The single destination of the Request.
.PP
-Definition at line 169 of file modules.h.
+Definition at line 187 of file modules.h.
.PP
Referenced by GetDest(), and Send().
.SS "\fBModule\fP* \fBRequest::source\fP\fC [protected]\fP"
.PP
This is a pointer to the sender of the message, which can be used to directly trigger events, or to create a reply.
.PP
-Definition at line 166 of file modules.h.
+Definition at line 184 of file modules.h.
.PP
Referenced by GetSource().
-.TH "Server" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Server" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
.RI "\fIAdds an extended mode letter which is parsed by a module and handled in a list fashion. \fP"
.ti -1c
-.RI "virtual void \fBAddCommand\fP (char *cmd, \fBhandlerfunc\fP f, char flags, int minparams, char *source)"
+.RI "virtual void \fBAddCommand\fP (\fBcommand_t\fP *f)"
.br
.RI "\fIAdds a command to the command table. \fP"
.ti -1c
All modules should instantiate at least one copy of this class, and use its member functions to perform their tasks.
.PP
-Definition at line 1096 of file modules.h.
+Definition at line 1114 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Server::Server ()"
.PP
Creates a Server object.
.PP
-Definition at line 305 of file modules.cpp.
+Definition at line 304 of file modules.cpp.
.PP
.nf
-306 {
-307 }
+305 {
+306 }
.fi
.PP
.SS "Server::~Server ()\fC [virtual]\fP"
.PP
Destroys a Server object.
.PP
-Definition at line 309 of file modules.cpp.
+Definition at line 308 of file modules.cpp.
.PP
.nf
-310 {
-311 }
+309 {
+310 }
.fi
.PP
.SH "Member Function Documentation"
.PP
-.SS "void Server::AddCommand (char * cmd, \fBhandlerfunc\fP f, char flags, int minparams, char * source)\fC [virtual]\fP"
+.SS "void Server::AddCommand (\fBcommand_t\fP * f)\fC [virtual]\fP"
.PP
Adds a command to the command table.
.PP
This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc:
.PP
-typedef void (handlerfunc) (char**, int, userrec*); ... void \fBhandle_kill(char **parameters, int pcnt, userrec *user)\fP
+typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)
.PP
When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'. The source parameter is used for resource tracking, and should contain the name of your module (with file extension) e.g. 'm_blarp.so'. If you place the wrong identifier here, you can cause crashes if your module is unloaded.
.PP
-Definition at line 416 of file modules.cpp.
+Definition at line 415 of file modules.cpp.
.PP
-References createcommand().
+References InspIRCd::Parser.
.PP
.nf
-417 {
-418 createcommand(cmd,f,flags,minparams,source);
-419 }
+416 {
+417 ServerInstance->Parser->CreateCommand(f);
+418 }
.fi
.PP
.SS "void Server::AddELine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 660 of file modules.cpp.
+Definition at line 659 of file modules.cpp.
.PP
References add_eline().
.PP
.nf
-661 {
-662 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-663 }
+660 {
+661 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+662 }
.fi
.PP
.SS "bool Server::AddExtendedListMode (char modechar)\fC [virtual]\fP"
.PP
It is down to the module handling the mode to maintain state and determine what 'items' (e.g. users, or a banlist) have the mode set on them, and process the modes at the correct times, e.g. during access checks on channels, etc. When the extended mode is triggered the OnExtendedMode method will be triggered as above. Note that the target you are given will be a channel, if for example your mode is set 'on a user' (in for example +a) you must use \fBServer::Find\fP to locate the user the mode is operating on. Your mode handler may return 1 to handle the mode AND tell the core to display the mode change, e.g. '+aaa one two three' in the case of the mode for 'two', or it may return -1 to 'eat' the mode change, so the above example would become '+aa one three' after processing.
.PP
-Definition at line 584 of file modules.cpp.
+Definition at line 583 of file modules.cpp.
.PP
References DoAddExtendedMode(), ModeMakeList(), and MT_CHANNEL.
.PP
.nf
-585 {
-586 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1);
-587 if (res)
-588 ModeMakeList(modechar);
-589 return res;
-590 }
+584 {
+585 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1);
+586 if (res)
+587 ModeMakeList(modechar);
+588 return res;
+589 }
.fi
.PP
.SS "bool Server::AddExtendedMode (char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)\fC [virtual]\fP"
.PP
This allows modules to add extra mode letters, e.g. +x for hostcloak. the 'type' parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
.PP
-Definition at line 556 of file modules.cpp.
+Definition at line 555 of file modules.cpp.
.PP
References DEBUG, DoAddExtendedMode(), log(), MT_CLIENT, and MT_SERVER.
.PP
.nf
-557 {
-558 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z')))
-559 {
-560 if (type == MT_SERVER)
-561 {
-562 log(DEBUG,'*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion');
-563 return false;
-564 }
-565 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT))
-566 {
-567 log(DEBUG,'*** API ERROR *** Parameters on MT_CLIENT modes are not supported');
-568 return false;
-569 }
-570 if ((params_when_on>1) || (params_when_off>1))
-571 {
-572 log(DEBUG,'*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported');
-573 return false;
-574 }
-575 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off);
-576 }
-577 else
-578 {
-579 log(DEBUG,'*** API ERROR *** Muppet modechar detected.');
-580 }
-581 return false;
-582 }
+556 {
+557 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z')))
+558 {
+559 if (type == MT_SERVER)
+560 {
+561 log(DEBUG,'*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion');
+562 return false;
+563 }
+564 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT))
+565 {
+566 log(DEBUG,'*** API ERROR *** Parameters on MT_CLIENT modes are not supported');
+567 return false;
+568 }
+569 if ((params_when_on>1) || (params_when_off>1))
+570 {
+571 log(DEBUG,'*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported');
+572 return false;
+573 }
+574 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off);
+575 }
+576 else
+577 {
+578 log(DEBUG,'*** API ERROR *** Muppet modechar detected.');
+579 }
+580 return false;
+581 }
.fi
.PP
.SS "void Server::AddGLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 640 of file modules.cpp.
+Definition at line 639 of file modules.cpp.
.PP
References add_gline().
.PP
.nf
-641 {
-642 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-643 }
+640 {
+641 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+642 }
.fi
.PP
.SS "void Server::AddKLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 655 of file modules.cpp.
+Definition at line 654 of file modules.cpp.
.PP
References add_kline().
.PP
.nf
-656 {
-657 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-658 }
+655 {
+656 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+657 }
.fi
.PP
.SS "void Server::AddQLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP nickname)\fC [virtual]\fP"
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 645 of file modules.cpp.
+Definition at line 644 of file modules.cpp.
.PP
References add_qline().
.PP
.nf
-646 {
-647 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str());
-648 }
+645 {
+646 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str());
+647 }
.fi
.PP
.SS "void Server::AddSocket (\fBInspSocket\fP * sock)\fC [virtual]\fP"
.PP
Adds a class derived from \fBInspSocket\fP to the server's socket engine.
.PP
-Definition at line 313 of file modules.cpp.
+Definition at line 312 of file modules.cpp.
.PP
References module_sockets.
.PP
.nf
-314 {
-315 module_sockets.push_back(sock);
-316 }
+313 {
+314 module_sockets.push_back(sock);
+315 }
.fi
.PP
.SS "void Server::AddZLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP ipaddr)\fC [virtual]\fP"
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 650 of file modules.cpp.
+Definition at line 649 of file modules.cpp.
.PP
References add_zline().
.PP
.nf
-651 {
-652 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
-653 }
+650 {
+651 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
+652 }
.fi
.PP
.SS "long Server::CalcDuration (\fBstd::string\fP duration)\fC [virtual]\fP"
.PP
'1w2d') and return its value as a total number of seconds. This is the same function used internally by /GLINE etc to set the ban times.
.PP
-Definition at line 690 of file modules.cpp.
+Definition at line 689 of file modules.cpp.
.PP
References duration().
.PP
.nf
-691 {
-692 return duration(delta.c_str());
-693 }
+690 {
+691 return duration(delta.c_str());
+692 }
.fi
.PP
.SS "void Server::CallCommandHandler (\fBstd::string\fP commandname, char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
.br
) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih \fBAddCommand()\fP. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.
.PP
-Definition at line 401 of file modules.cpp.
+Definition at line 400 of file modules.cpp.
.PP
-References call_handler().
+References InspIRCd::Parser.
.PP
.nf
-402 {
-403 call_handler(commandname.c_str(),parameters,pcnt,user);
-404 }
+401 {
+402 ServerInstance->Parser->CallHandler(commandname,parameters,pcnt,user);
+403 }
.fi
.PP
.SS "void Server::ChangeGECOS (\fBuserrec\fP * user, \fBstd::string\fP gecos)\fC [virtual]\fP"
.PP
You should always call this method to change a user's GECOS rather than writing directly to the fullname member of userrec, as any change applied via this method will be propogated to any linked servers.
.PP
-Definition at line 499 of file modules.cpp.
+Definition at line 498 of file modules.cpp.
.PP
References ChangeName().
.PP
.nf
-500 {
-501 ChangeName(user,gecos.c_str());
-502 }
+499 {
+500 ChangeName(user,gecos.c_str());
+501 }
.fi
.PP
.SS "void Server::ChangeHost (\fBuserrec\fP * user, \fBstd::string\fP host)\fC [virtual]\fP"
.PP
You should always call this method to change a user's host rather than writing directly to the dhost member of userrec, as any change applied via this method will be propogated to any linked servers.
.PP
-Definition at line 494 of file modules.cpp.
+Definition at line 493 of file modules.cpp.
.PP
References ChangeDisplayedHost().
.PP
.nf
-495 {
-496 ChangeDisplayedHost(user,host.c_str());
-497 }
+494 {
+495 ChangeDisplayedHost(user,host.c_str());
+496 }
.fi
.PP
.SS "void Server::ChangeUserNick (\fBuserrec\fP * user, \fBstd::string\fP nickname)\fC [virtual]\fP"
.PP
This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.
.PP
-Definition at line 386 of file modules.cpp.
+Definition at line 385 of file modules.cpp.
.PP
References force_nickchange().
.PP
.nf
-387 {
-388 force_nickchange(user,nickname.c_str());
-389 }
+386 {
+387 force_nickchange(user,nickname.c_str());
+388 }
.fi
.PP
.SS "\fBstd::string\fP Server::ChanMode (\fBuserrec\fP * User, \fBchanrec\fP * Chan)\fC [virtual]\fP"
.PP
This function will return a string containing either @, %, +, or an empty string, representing the user's privilages upon the channel you specify.
.PP
-Definition at line 524 of file modules.cpp.
+Definition at line 523 of file modules.cpp.
.PP
References cmode().
.PP
.nf
-525 {
-526 return cmode(User,Chan);
-527 }
+524 {
+525 return cmode(User,Chan);
+526 }
.fi
.PP
.SS "bool Server::CommonChannels (\fBuserrec\fP * u1, \fBuserrec\fP * u2)\fC [virtual]\fP"
.PP
This method is used internally by the NICK and QUIT commands, and the \fBServer::SendCommon\fP method.
.PP
-Definition at line 472 of file modules.cpp.
+Definition at line 471 of file modules.cpp.
.PP
References common_channels().
.PP
.nf
-473 {
-474 return (common_channels(u1,u2) != 0);
-475 }
+472 {
+473 return (common_channels(u1,u2) != 0);
+474 }
.fi
.PP
.SS "int Server::CountUsers (\fBchanrec\fP * c)\fC [virtual]\fP"
.PP
This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel.
.PP
-Definition at line 592 of file modules.cpp.
+Definition at line 591 of file modules.cpp.
.PP
.nf
-593 {
-594 return usercount(c);
-595 }
+592 {
+593 return usercount(c);
+594 }
.fi
.PP
.SS "bool Server::DelELine (\fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
Deletes a local E-Line.
.PP
-Definition at line 685 of file modules.cpp.
+Definition at line 684 of file modules.cpp.
.PP
References del_eline().
.PP
.nf
-686 {
-687 return del_eline(hostmask.c_str());
-688 }
+685 {
+686 return del_eline(hostmask.c_str());
+687 }
.fi
.PP
.SS "bool Server::DelGLine (\fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
Deletes a G-Line from all servers on the mesh.
.PP
-Definition at line 665 of file modules.cpp.
+Definition at line 664 of file modules.cpp.
.PP
References del_gline().
.PP
.nf
-666 {
-667 return del_gline(hostmask.c_str());
-668 }
+665 {
+666 return del_gline(hostmask.c_str());
+667 }
.fi
.PP
.SS "bool Server::DelKLine (\fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
Deletes a local K-Line.
.PP
-Definition at line 680 of file modules.cpp.
+Definition at line 679 of file modules.cpp.
.PP
References del_kline().
.PP
.nf
-681 {
-682 return del_kline(hostmask.c_str());
-683 }
+680 {
+681 return del_kline(hostmask.c_str());
+682 }
.fi
.PP
.SS "bool Server::DelQLine (\fBstd::string\fP nickname)\fC [virtual]\fP"
.PP
Deletes a Q-Line from all servers on the mesh.
.PP
-Definition at line 670 of file modules.cpp.
+Definition at line 669 of file modules.cpp.
.PP
References del_qline().
.PP
.nf
-671 {
-672 return del_qline(nickname.c_str());
-673 }
+670 {
+671 return del_qline(nickname.c_str());
+672 }
.fi
.PP
.SS "void Server::DelSocket (\fBInspSocket\fP * sock)\fC [virtual]\fP"
.PP
Deletes a class derived from \fBInspSocket\fP from the server's socket engine.
.PP
-Definition at line 334 of file modules.cpp.
+Definition at line 333 of file modules.cpp.
.PP
References module_sockets.
.PP
.nf
-335 {
-336 for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
-337 {
-338 if (*a == sock)
-339 {
-340 module_sockets.erase(a);
-341 return;
-342 }
-343 }
-344 }
+334 {
+335 for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
+336 {
+337 if (*a == sock)
+338 {
+339 module_sockets.erase(a);
+340 return;
+341 }
+342 }
+343 }
.fi
.PP
.SS "bool Server::DelZLine (\fBstd::string\fP ipaddr)\fC [virtual]\fP"
.PP
Deletes a Z-Line from all servers on the mesh.
.PP
-Definition at line 675 of file modules.cpp.
+Definition at line 674 of file modules.cpp.
.PP
References del_zline().
.PP
.nf
-676 {
-677 return del_zline(ipaddr.c_str());
-678 }
+675 {
+676 return del_zline(ipaddr.c_str());
+677 }
.fi
.PP
.SS "\fBchanrec\fP * Server::FindChannel (\fBstd::string\fP channel)\fC [virtual]\fP"
.PP
This function will return NULL if the channel does not exist.
.PP
-Definition at line 519 of file modules.cpp.
+Definition at line 518 of file modules.cpp.
.PP
References FindChan().
.PP
.nf
-520 {
-521 return FindChan(channel.c_str());
-522 }
+519 {
+520 return FindChan(channel.c_str());
+521 }
.fi
.PP
.SS "\fBuserrec\fP * Server::FindDescriptor (int socket)\fC [virtual]\fP"
.PP
This function will return NULL if the file descriptor is not associated with a valid user.
.PP
-Definition at line 514 of file modules.cpp.
+Definition at line 513 of file modules.cpp.
.PP
.nf
-515 {
-516 return (socket < 65536 ? fd_ref_table[socket] : NULL);
-517 }
+514 {
+515 return (socket < 65536 ? fd_ref_table[socket] : NULL);
+516 }
.fi
.PP
.SS "\fBModule\fP * Server::FindModule (\fBstd::string\fP name)\fC [virtual]\fP"
.PP
You must provide the filename of the module. If the module cannot be found (is not loaded) the function will return NULL.
.PP
-Definition at line 724 of file modules.cpp.
+Definition at line 723 of file modules.cpp.
.PP
References MODCOUNT, ServerConfig::module_names, and modules.
.PP
.nf
-725 {
-726 for (int i = 0; i <= MODCOUNT; i++)
-727 {
-728 if (Config->module_names[i] == name)
-729 {
-730 return modules[i];
-731 }
-732 }
-733 return NULL;
-734 }
+724 {
+725 for (int i = 0; i <= MODCOUNT; i++)
+726 {
+727 if (Config->module_names[i] == name)
+728 {
+729 return modules[i];
+730 }
+731 }
+732 return NULL;
+733 }
.fi
.PP
.SS "\fBuserrec\fP * Server::FindNick (\fBstd::string\fP nick)\fC [virtual]\fP"
.PP
This function will return NULL if the nick does not exist.
.PP
-Definition at line 509 of file modules.cpp.
+Definition at line 508 of file modules.cpp.
.PP
References Find().
.PP
.nf
-510 {
-511 return Find(nick);
-512 }
+509 {
+510 return Find(nick);
+511 }
.fi
.PP
.SS "\fBAdmin\fP Server::GetAdmin ()\fC [virtual]\fP"
.PP
See the \fBAdmin\fP class for further information of the return value. The members \fBAdmin::Nick\fP, \fBAdmin::Email\fP and \fBAdmin::Name\fP contain the information for the server where the module is loaded.
.PP
-Definition at line 549 of file modules.cpp.
+Definition at line 548 of file modules.cpp.
.PP
References ServerConfig::AdminEmail, ServerConfig::AdminName, and ServerConfig::AdminNick.
.PP
.nf
-550 {
-551 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick);
-552 }
+549 {
+550 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick);
+551 }
.fi
.PP
.SS "\fBServerConfig\fP * Server::GetConfig ()"
.PP
The \fBServerConfig\fP object contains most of the configuration data of the IRC server, as read from the config file by the core.
.PP
-Definition at line 324 of file modules.cpp.
+Definition at line 323 of file modules.cpp.
.PP
.nf
-325 {
-326 return Config;
-327 }
+324 {
+325 return Config;
+326 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetNetworkName ()\fC [virtual]\fP"
.PP
Returns the network name, global to all linked servers.
.PP
-Definition at line 539 of file modules.cpp.
+Definition at line 538 of file modules.cpp.
.PP
References ServerConfig::Network.
.PP
.nf
-540 {
-541 return Config->Network;
-542 }
+539 {
+540 return Config->Network;
+541 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetServerDescription ()\fC [virtual]\fP"
.PP
Returns the server description string of the local server.
.PP
-Definition at line 544 of file modules.cpp.
+Definition at line 543 of file modules.cpp.
.PP
References ServerConfig::ServerDesc.
.PP
.nf
-545 {
-546 return Config->ServerDesc;
-547 }
+544 {
+545 return Config->ServerDesc;
+546 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetServerName ()\fC [virtual]\fP"
.PP
Returns the server name of the server where the module is loaded.
.PP
-Definition at line 534 of file modules.cpp.
+Definition at line 533 of file modules.cpp.
.PP
References ServerConfig::ServerName.
.PP
.nf
-535 {
-536 return Config->ServerName;
-537 }
+534 {
+535 return Config->ServerName;
+536 }
.fi
.PP
.SS "\fBchanuserlist\fP Server::GetUsers (\fBchanrec\fP * chan)\fC [virtual]\fP"
.PP
This function must be here and not a member of userrec or chanrec due to include constraints.
.PP
-Definition at line 374 of file modules.cpp.
+Definition at line 373 of file modules.cpp.
.PP
References chanrec::GetUsers().
.PP
.nf
-375 {
-376 chanuserlist userl;
-377 userl.clear();
-378 std::vector<char*> *list = chan->GetUsers();
-379 for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
-380 {
-381 char* o = *i;
-382 userl.push_back((userrec*)o);
-383 }
-384 return userl;
-385 }
+374 {
+375 chanuserlist userl;
+376 userl.clear();
+377 std::vector<char*> *list = chan->GetUsers();
+378 for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
+379 {
+380 char* o = *i;
+381 userl.push_back((userrec*)o);
+382 }
+383 return userl;
+384 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetVersion ()"
.PP
Returns the version string of this server.
.PP
-Definition at line 329 of file modules.cpp.
+Definition at line 328 of file modules.cpp.
.PP
References InspIRCd::GetVersionString().
.PP
.nf
-330 {
-331 return ServerInstance->GetVersionString();
-332 }
+329 {
+330 return ServerInstance->GetVersionString();
+331 }
.fi
.PP
.SS "bool Server::IsNick (\fBstd::string\fP nick)\fC [virtual]\fP"
.PP
Nicks for unregistered connections will return false.
.PP
-Definition at line 504 of file modules.cpp.
+Definition at line 503 of file modules.cpp.
.PP
References isnick().
.PP
.nf
-505 {
-506 return (isnick(nick.c_str()) != 0);
-507 }
+504 {
+505 return (isnick(nick.c_str()) != 0);
+506 }
.fi
.PP
.SS "bool Server::IsOnChannel (\fBuserrec\fP * User, \fBchanrec\fP * Chan)\fC [virtual]\fP"
.PP
This function will return true or false to indicate if user 'User' is on channel 'Chan'.
.PP
-Definition at line 529 of file modules.cpp.
+Definition at line 528 of file modules.cpp.
.PP
References has_channel().
.PP
.nf
-530 {
-531 return has_channel(User,Chan);
-532 }
+529 {
+530 return has_channel(User,Chan);
+531 }
.fi
.PP
.SS "bool Server::IsUlined (\fBstd::string\fP server)\fC [virtual]\fP"
.PP
ULined servers have extra privilages. They are allowed to change nicknames on remote servers, change modes of clients which are on remote servers and set modes of channels where there are no channel operators for that channel on the ulined server, amongst other things. Ulined server data is also broadcast across the mesh at all times as opposed to selectively messaged in the case of normal servers, as many ulined server types (such as services) do not support meshed links and must operate in this manner.
.PP
-Definition at line 396 of file modules.cpp.
+Definition at line 395 of file modules.cpp.
.PP
References is_uline().
.PP
.nf
-397 {
-398 return is_uline(server.c_str());
-399 }
+396 {
+397 return is_uline(server.c_str());
+398 }
.fi
.PP
.SS "bool Server::IsValidMask (\fBstd::string\fP mask)\fC [virtual]\fP"
.PP
Returns true if a nick!ident string is correctly formatted, false if otherwise.
.PP
-Definition at line 695 of file modules.cpp.
+Definition at line 694 of file modules.cpp.
.PP
.nf
-696 {
-697 const char* dest = mask.c_str();
-698 if (strchr(dest,'!')==0)
-699 return false;
-700 if (strchr(dest,'@')==0)
-701 return false;
-702 for (unsigned int i = 0; i < strlen(dest); i++)
-703 if (dest[i] < 32)
-704 return false;
-705 for (unsigned int i = 0; i < strlen(dest); i++)
-706 if (dest[i] > 126)
-707 return false;
-708 unsigned int c = 0;
-709 for (unsigned int i = 0; i < strlen(dest); i++)
-710 if (dest[i] == '!')
-711 c++;
-712 if (c>1)
-713 return false;
-714 c = 0;
-715 for (unsigned int i = 0; i < strlen(dest); i++)
-716 if (dest[i] == '@')
-717 c++;
-718 if (c>1)
-719 return false;
-720
-721 return true;
-722 }
+695 {
+696 const char* dest = mask.c_str();
+697 if (strchr(dest,'!')==0)
+698 return false;
+699 if (strchr(dest,'@')==0)
+700 return false;
+701 for (unsigned int i = 0; i < strlen(dest); i++)
+702 if (dest[i] < 32)
+703 return false;
+704 for (unsigned int i = 0; i < strlen(dest); i++)
+705 if (dest[i] > 126)
+706 return false;
+707 unsigned int c = 0;
+708 for (unsigned int i = 0; i < strlen(dest); i++)
+709 if (dest[i] == '!')
+710 c++;
+711 if (c>1)
+712 return false;
+713 c = 0;
+714 for (unsigned int i = 0; i < strlen(dest); i++)
+715 if (dest[i] == '@')
+716 c++;
+717 if (c>1)
+718 return false;
+719
+720 return true;
+721 }
.fi
.PP
.SS "bool Server::IsValidModuleCommand (\fBstd::string\fP commandname, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
.PP
-Definition at line 406 of file modules.cpp.
+Definition at line 405 of file modules.cpp.
.PP
-References is_valid_cmd().
+References InspIRCd::Parser.
.PP
.nf
-407 {
-408 return is_valid_cmd(commandname.c_str(), pcnt, user);
-409 }
+406 {
+407 return ServerInstance->Parser->IsValidCommand(commandname, pcnt, user);
+408 }
.fi
.PP
.SS "\fBchanrec\fP * Server::JoinUserToChannel (\fBuserrec\fP * user, \fBstd::string\fP cname, \fBstd::string\fP key)\fC [virtual]\fP"
.PP
This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL.
.PP
-Definition at line 364 of file modules.cpp.
+Definition at line 363 of file modules.cpp.
.PP
References add_channel().
.PP
.nf
-365 {
-366 return add_channel(user,cname.c_str(),key.c_str(),false);
-367 }
+364 {
+365 return add_channel(user,cname.c_str(),key.c_str(),false);
+366 }
.fi
.PP
.SS "void Server::Log (int level, \fBstd::string\fP s)\fC [virtual]\fP"
.PP
This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
.PP
-Definition at line 411 of file modules.cpp.
+Definition at line 410 of file modules.cpp.
.PP
References log().
.PP
.nf
-412 {
-413 log(level,'%s',s.c_str());
-414 }
+411 {
+412 log(level,'%s',s.c_str());
+413 }
.fi
.PP
.SS "bool Server::MatchText (\fBstd::string\fP sliteral, \fBstd::string\fP spattern)\fC [virtual]\fP"
.PP
Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise.
.PP
-Definition at line 351 of file modules.cpp.
+Definition at line 350 of file modules.cpp.
.PP
.nf
-352 {
-353 char literal[MAXBUF],pattern[MAXBUF];
-354 strlcpy(literal,sliteral.c_str(),MAXBUF);
-355 strlcpy(pattern,spattern.c_str(),MAXBUF);
-356 return match(literal,pattern);
-357 }
+351 {
+352 char literal[MAXBUF],pattern[MAXBUF];
+353 strlcpy(literal,sliteral.c_str(),MAXBUF);
+354 strlcpy(pattern,spattern.c_str(),MAXBUF);
+355 return match(literal,pattern);
+356 }
.fi
.PP
.SS "\fBchanrec\fP * Server::PartUserFromChannel (\fBuserrec\fP * user, \fBstd::string\fP cname, \fBstd::string\fP reason)\fC [virtual]\fP"
.PP
This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version.
.PP
-Definition at line 369 of file modules.cpp.
+Definition at line 368 of file modules.cpp.
.PP
References del_channel().
.PP
.nf
-370 {
-371 return del_channel(user,cname.c_str(),reason.c_str(),false);
-372 }
+369 {
+370 return del_channel(user,cname.c_str(),reason.c_str(),false);
+371 }
.fi
.PP
.SS "bool Server::PseudoToUser (\fBuserrec\fP * alive, \fBuserrec\fP * zombie, \fBstd::string\fP message)\fC [virtual]\fP"
.PP
The user in 'alive' is booted off the server with the given message. The user referred to by 'zombie' should have previously been locked with Server::ZombifyUser, otherwise stale sockets and file descriptor leaks can occur. After this call, the pointer to alive will be invalid, and the pointer to zombie will be equivalent in effect to the old pointer to alive.
.PP
-Definition at line 610 of file modules.cpp.
+Definition at line 609 of file modules.cpp.
.PP
References userrec::chans, userrec::ClearBuffer(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, kill_link(), chanrec::name, userrec::nick, chanrec::setby, chanrec::topic, chanrec::topicset, Write(), WriteFrom(), and WriteServ().
.PP
.nf
-611 {
-612 zombie->fd = alive->fd;
-613 alive->fd = FD_MAGIC_NUMBER;
-614 alive->ClearBuffer();
-615 Write(zombie->fd,':%s!%s@%s NICK %s',alive->nick,alive->ident,alive->host,zombie->nick);
-616 kill_link(alive,message.c_str());
-617 fd_ref_table[zombie->fd] = zombie;
-618 for (unsigned int i = 0; i < zombie->chans.size(); i++)
-619 {
-620 if (zombie->chans[i].channel != NULL)
-621 {
-622 if (zombie->chans[i].channel->name)
-623 {
-624 chanrec* Ptr = zombie->chans[i].channel;
-625 WriteFrom(zombie->fd,zombie,'JOIN %s',Ptr->name);
-626 if (Ptr->topicset)
-627 {
-628 WriteServ(zombie->fd,'332 %s %s :%s', zombie->nick, Ptr->name, Ptr->topic);
-629 WriteServ(zombie->fd,'333 %s %s %s %d', zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset);
-630 }
-631 userlist(zombie,Ptr);
-632 WriteServ(zombie->fd,'366 %s %s :End of /NAMES list.', zombie->nick, Ptr->name);
-633
-634 }
-635 }
-636 }
-637 return true;
-638 }
+610 {
+611 zombie->fd = alive->fd;
+612 alive->fd = FD_MAGIC_NUMBER;
+613 alive->ClearBuffer();
+614 Write(zombie->fd,':%s!%s@%s NICK %s',alive->nick,alive->ident,alive->host,zombie->nick);
+615 kill_link(alive,message.c_str());
+616 fd_ref_table[zombie->fd] = zombie;
+617 for (unsigned int i = 0; i < zombie->chans.size(); i++)
+618 {
+619 if (zombie->chans[i].channel != NULL)
+620 {
+621 if (zombie->chans[i].channel->name)
+622 {
+623 chanrec* Ptr = zombie->chans[i].channel;
+624 WriteFrom(zombie->fd,zombie,'JOIN %s',Ptr->name);
+625 if (Ptr->topicset)
+626 {
+627 WriteServ(zombie->fd,'332 %s %s :%s', zombie->nick, Ptr->name, Ptr->topic);
+628 WriteServ(zombie->fd,'333 %s %s %s %d', zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset);
+629 }
+630 userlist(zombie,Ptr);
+631 WriteServ(zombie->fd,'366 %s %s :End of /NAMES list.', zombie->nick, Ptr->name);
+632
+633 }
+634 }
+635 }
+636 return true;
+637 }
.fi
.PP
.SS "void Server::QuitUser (\fBuserrec\fP * user, \fBstd::string\fP reason)\fC [virtual]\fP"
.PP
Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.
.PP
-Definition at line 391 of file modules.cpp.
+Definition at line 390 of file modules.cpp.
.PP
References kill_link().
.PP
.nf
-392 {
-393 kill_link(user,reason.c_str());
-394 }
+391 {
+392 kill_link(user,reason.c_str());
+393 }
.fi
.PP
.SS "void Server::RehashServer ()\fC [virtual]\fP"
.PP
-Definition at line 318 of file modules.cpp.
+Definition at line 317 of file modules.cpp.
.PP
References ServerConfig::Read(), and WriteOpers().
.PP
.nf
-319 {
-320 WriteOpers('*** Rehashing config file');
-321 Config->Read(false,NULL);
-322 }
+318 {
+319 WriteOpers('*** Rehashing config file');
+320 Config->Read(false,NULL);
+321 }
.fi
.PP
.SS "void Server::Send (int Socket, \fBstd::string\fP s)\fC [virtual]\fP"
.PP
This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
.PP
-Definition at line 426 of file modules.cpp.
+Definition at line 425 of file modules.cpp.
.PP
References Write().
.PP
.nf
-427 {
-428 Write(Socket,'%s',s.c_str());
-429 }
+426 {
+427 Write(Socket,'%s',s.c_str());
+428 }
.fi
.PP
.SS "void Server::SendChannel (\fBuserrec\fP * User, \fBchanrec\fP * Channel, \fBstd::string\fP s, bool IncludeSender)\fC [virtual]\fP"
.PP
This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
.PP
-Definition at line 460 of file modules.cpp.
+Definition at line 459 of file modules.cpp.
.PP
References ChanExceptSender(), and WriteChannel().
.PP
.nf
-461 {
-462 if (IncludeSender)
-463 {
-464 WriteChannel(Channel,User,'%s',s.c_str());
-465 }
-466 else
-467 {
-468 ChanExceptSender(Channel,User,'%s',s.c_str());
-469 }
-470 }
+460 {
+461 if (IncludeSender)
+462 {
+463 WriteChannel(Channel,User,'%s',s.c_str());
+464 }
+465 else
+466 {
+467 ChanExceptSender(Channel,User,'%s',s.c_str());
+468 }
+469 }
.fi
.PP
.SS "void Server::SendChannelServerNotice (\fBstd::string\fP ServName, \fBchanrec\fP * Channel, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
This can be used to send server notices to a group of users.
.PP
-Definition at line 455 of file modules.cpp.
+Definition at line 454 of file modules.cpp.
.PP
.nf
-456 {
-457 WriteChannelWithServ((char*)ServName.c_str(), Channel, '%s', text.c_str());
-458 }
+455 {
+456 WriteChannelWithServ((char*)ServName.c_str(), Channel, '%s', text.c_str());
+457 }
.fi
.PP
.SS "void Server::SendCommon (\fBuserrec\fP * User, \fBstd::string\fP text, bool IncludeSender)\fC [virtual]\fP"
.PP
This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
.PP
-Definition at line 477 of file modules.cpp.
+Definition at line 476 of file modules.cpp.
.PP
References WriteCommon(), and WriteCommonExcept().
.PP
.nf
-478 {
-479 if (IncludeSender)
-480 {
-481 WriteCommon(User,'%s',text.c_str());
-482 }
-483 else
-484 {
-485 WriteCommonExcept(User,'%s',text.c_str());
-486 }
-487 }
+477 {
+478 if (IncludeSender)
+479 {
+480 WriteCommon(User,'%s',text.c_str());
+481 }
+482 else
+483 {
+484 WriteCommonExcept(User,'%s',text.c_str());
+485 }
+486 }
.fi
.PP
.SS "void Server::SendFrom (int Socket, \fBuserrec\fP * User, \fBstd::string\fP s)\fC [virtual]\fP"
.PP
This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
.PP
-Definition at line 436 of file modules.cpp.
+Definition at line 435 of file modules.cpp.
.PP
References WriteFrom().
.PP
.nf
-437 {
-438 WriteFrom(Socket,User,'%s',s.c_str());
-439 }
+436 {
+437 WriteFrom(Socket,User,'%s',s.c_str());
+438 }
.fi
.PP
.SS "void Server::SendMode (char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
.PP
The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
.PP
-Definition at line 421 of file modules.cpp.
+Definition at line 420 of file modules.cpp.
.PP
-References server_mode().
+References InspIRCd::ModeGrok, and ModeParser::ServerMode().
.PP
.nf
-422 {
-423 server_mode(parameters,pcnt,user);
-424 }
+421 {
+422 ServerInstance->ModeGrok->ServerMode(parameters,pcnt,user);
+423 }
.fi
.PP
.SS "void Server::SendOpers (\fBstd::string\fP s)\fC [virtual]\fP"
.PP
This method sends a server notice to all opers with the usermode +s.
.PP
-Definition at line 346 of file modules.cpp.
+Definition at line 345 of file modules.cpp.
.PP
References WriteOpers().
.PP
.nf
-347 {
-348 WriteOpers('%s',s.c_str());
-349 }
+346 {
+347 WriteOpers('%s',s.c_str());
+348 }
.fi
.PP
.SS "void Server::SendServ (int Socket, \fBstd::string\fP s)\fC [virtual]\fP"
.PP
This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
.PP
-Definition at line 431 of file modules.cpp.
+Definition at line 430 of file modules.cpp.
.PP
References WriteServ().
.PP
.nf
-432 {
-433 WriteServ(Socket,'%s',s.c_str());
-434 }
+431 {
+432 WriteServ(Socket,'%s',s.c_str());
+433 }
.fi
.PP
.SS "void Server::SendTo (\fBuserrec\fP * Source, \fBuserrec\fP * Dest, \fBstd::string\fP s)\fC [virtual]\fP"
.PP
Which is useful for numerics and server notices to single users, etc.
.PP
-Definition at line 441 of file modules.cpp.
+Definition at line 440 of file modules.cpp.
.PP
References connection::fd, Write(), and WriteTo().
.PP
.nf
-442 {
-443 if (!Source)
-444 {
-445 // if source is NULL, then the message originates from the local server
-446 Write(Dest->fd,':%s %s',this->GetServerName().c_str(),s.c_str());
-447 }
-448 else
-449 {
-450 // otherwise it comes from the user specified
-451 WriteTo(Source,Dest,'%s',s.c_str());
-452 }
-453 }
+441 {
+442 if (!Source)
+443 {
+444 // if source is NULL, then the message originates from the local server
+445 Write(Dest->fd,':%s %s',this->GetServerName().c_str(),s.c_str());
+446 }
+447 else
+448 {
+449 // otherwise it comes from the user specified
+450 WriteTo(Source,Dest,'%s',s.c_str());
+451 }
+452 }
.fi
.PP
.SS "void Server::SendToModeMask (\fBstd::string\fP modes, int flags, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.
.PP
-Definition at line 359 of file modules.cpp.
+Definition at line 358 of file modules.cpp.
.PP
.nf
-360 {
-361 WriteMode(modes.c_str(),flags,'%s',text.c_str());
-362 }
+359 {
+360 WriteMode(modes.c_str(),flags,'%s',text.c_str());
+361 }
.fi
.PP
.SS "void Server::SendWallops (\fBuserrec\fP * User, \fBstd::string\fP text)\fC [virtual]\fP"
.PP
This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
.PP
-Definition at line 489 of file modules.cpp.
+Definition at line 488 of file modules.cpp.
.PP
References WriteWallOps().
.PP
.nf
-490 {
-491 WriteWallOps(User,false,'%s',text.c_str());
-492 }
+489 {
+490 WriteWallOps(User,false,'%s',text.c_str());
+491 }
.fi
.PP
.SS "bool Server::UserToPseudo (\fBuserrec\fP * user, \fBstd::string\fP message)\fC [virtual]\fP"
.PP
When you call this function, the user's file descriptor will be replaced with the value of FD_MAGIC_NUMBER and their old file descriptor will be closed. This idle client will remain until it is restored with a valid file descriptor, or is removed from IRC by an operator After this call, the pointer to user will be invalid.
.PP
-Definition at line 598 of file modules.cpp.
+Definition at line 597 of file modules.cpp.
.PP
-References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, and Write().
+References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, InspIRCd::SE, and Write().
.PP
.nf
-599 {
-600 unsigned int old_fd = user->fd;
-601 user->fd = FD_MAGIC_NUMBER;
-602 user->ClearBuffer();
-603 Write(old_fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,message.c_str());
-604 SE->DelFd(old_fd);
-605 shutdown(old_fd,2);
-606 close(old_fd);
-607 return true;
-608 }
+598 {
+599 unsigned int old_fd = user->fd;
+600 user->fd = FD_MAGIC_NUMBER;
+601 user->ClearBuffer();
+602 Write(old_fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,message.c_str());
+603 ServerInstance->SE->DelFd(old_fd);
+604 shutdown(old_fd,2);
+605 close(old_fd);
+606 return true;
+607 }
.fi
.PP
-.TH "ServerConfig" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ServerConfig" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.ti -1c
.RI "int \fBEnumValues\fP (std::stringstream *config, const char *tag, int index)"
.br
+.ti -1c
+.RI "\fBModule\fP * \fBGetIOHook\fP (int port)"
+.br
+.ti -1c
+.RI "bool \fBAddIOHook\fP (int port, \fBModule\fP *iomod)"
+.br
+.ti -1c
+.RI "bool \fBDelIOHook\fP (int port)"
+.br
.in -1c
.SS "Public Attributes"
.RI "int \fBports\fP [255]"
.br
.RI "\fIA list of ports which the server is listening on. \fP"
+.ti -1c
+.RI "std::map< int, \fBModule\fP * > \fBIOHookModule\fP"
+.br
+.RI "\fIA list of ports claimed by IO Modules. \fP"
.in -1c
.SS "Private Member Functions"
It allows for reading new config values, accessing configuration files, and storage of the configuration data needed to run the ircd, such as the servername, connect classes, /ADMIN data, MOTDs and filenames etc.
.PP
-Definition at line 39 of file inspircd_io.h.
+Definition at line 40 of file inspircd_io.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ServerConfig::ServerConfig ()"
.PP
.SH "Member Function Documentation"
.PP
+.SS "bool ServerConfig::AddIOHook (int port, \fBModule\fP * iomod)"
+.PP
.SS "void ServerConfig::ClearStack ()"
.PP
Clears the include stack in preperation for a \fBRead()\fP call.
Referenced by userrec::HasPermission().
.SS "int ServerConfig::ConfValueEnum (char * tag, std::stringstream * config)"
.PP
+.SS "bool ServerConfig::DelIOHook (int port)"
+.PP
.SS "int ServerConfig::EnumConf (std::stringstream * config_f, const char * tag)"
.PP
Referenced by ConfigReader::Enumerate().
Used by the config file subsystem to safely read a C-style string without dependency upon any certain style of linefeed, e.g.
.PP
it can read both windows and UNIX style linefeeds transparently.
+.SS "\fBModule\fP* ServerConfig::GetIOHook (int port)"
+.PP
+Referenced by kill_link(), and kill_link_silent().
.SS "bool ServerConfig::LoadConf (const char * filename, std::stringstream * target, std::stringstream * errorstream)"
.PP
Referenced by ConfigReader::ConfigReader().
.PP
A list of IP addresses the server is listening on.
.PP
-Definition at line 216 of file inspircd_io.h.
+Definition at line 217 of file inspircd_io.h.
.SS "char \fBServerConfig::AdminEmail\fP[MAXBUF]"
.PP
Holds the email address of the admin, for output in the /ADMIN command.
.PP
-Definition at line 89 of file inspircd_io.h.
+Definition at line 90 of file inspircd_io.h.
.PP
Referenced by Server::GetAdmin().
.SS "char \fBServerConfig::AdminName\fP[MAXBUF]"
.PP
Holds the admin's name, for output in the /ADMIN command.
.PP
-Definition at line 84 of file inspircd_io.h.
+Definition at line 85 of file inspircd_io.h.
.PP
Referenced by Server::GetAdmin().
.SS "char \fBServerConfig::AdminNick\fP[MAXBUF]"
.PP
Holds the admin's nickname, for output in the /ADMIN command.
.PP
-Definition at line 94 of file inspircd_io.h.
+Definition at line 95 of file inspircd_io.h.
.PP
Referenced by Server::GetAdmin().
.SS "bool \fBServerConfig::AllowHalfop\fP"
.PP
If this value is true, halfops have been enabled in the configuration file.
.PP
-Definition at line 171 of file inspircd_io.h.
+Definition at line 172 of file inspircd_io.h.
.SS "\fBClassVector\fP \fBServerConfig::Classes\fP"
.PP
The connect classes in use by the IRC server.
.PP
-Definition at line 242 of file inspircd_io.h.
+Definition at line 243 of file inspircd_io.h.
+.PP
+Referenced by AddClient().
.SS "std::stringstream \fBServerConfig::config_f\fP"
.PP
The parsed configuration file as a stringstream.
.PP
You should pass this to any configuration methods of this class, and not access it directly. It is recommended that modules use \fBConfigReader\fP instead which provides a simpler abstraction of configuration files.
.PP
-Definition at line 238 of file inspircd_io.h.
+Definition at line 239 of file inspircd_io.h.
.PP
Referenced by userrec::HasPermission().
.SS "int \fBServerConfig::debugging\fP"
.PP
True if the DEBUG loglevel is selected.
.PP
-Definition at line 202 of file inspircd_io.h.
+Definition at line 203 of file inspircd_io.h.
.SS "int \fBServerConfig::DieDelay\fP"
.PP
How many seconds to wait before exiting the program when /DIE is correctly issued.
.PP
-Definition at line 211 of file inspircd_io.h.
+Definition at line 212 of file inspircd_io.h.
.SS "char \fBServerConfig::diepass\fP[MAXBUF]"
.PP
The admin-configured /DIE password.
.PP
-Definition at line 98 of file inspircd_io.h.
+Definition at line 99 of file inspircd_io.h.
.SS "char \fBServerConfig::DieValue\fP[MAXBUF]"
.PP
The last string found within a <die> tag, or an empty string.
.PP
-Definition at line 121 of file inspircd_io.h.
+Definition at line 122 of file inspircd_io.h.
.SS "char \fBServerConfig::DisabledCommands\fP[MAXBUF]"
.PP
This variable contains a space-seperated list of commands which are disabled by the administrator of the server for non-opers.
.PP
-Definition at line 131 of file inspircd_io.h.
+Definition at line 132 of file inspircd_io.h.
.SS "int \fBServerConfig::dns_timeout\fP"
.PP
The number of seconds the \fBDNS\fP subsystem will wait before timing out any request.
.PP
-Definition at line 176 of file inspircd_io.h.
+Definition at line 177 of file inspircd_io.h.
+.PP
+Referenced by AddClient().
.SS "char \fBServerConfig::DNSServer\fP[MAXBUF]"
.PP
The \fBDNS\fP server to use for \fBDNS\fP queries.
.PP
-Definition at line 125 of file inspircd_io.h.
+Definition at line 126 of file inspircd_io.h.
.SS "std::vector<\fBstd::string\fP> \fBServerConfig::include_stack\fP\fC [private]\fP"
.PP
This variable holds the names of all files included from the main one.
.PP
This is used to make sure that no files are recursively included.
.PP
-Definition at line 47 of file inspircd_io.h.
+Definition at line 48 of file inspircd_io.h.
+.SS "std::map<int,\fBModule\fP*> \fBServerConfig::IOHookModule\fP"
+.PP
+A list of ports claimed by IO Modules.
+.PP
+Definition at line 256 of file inspircd_io.h.
.SS "FILE* \fBServerConfig::log_file\fP"
.PP
The file handle of the logfile.
.PP
If this value is NULL, the log file is not open, probably due to a permissions error on startup (this should not happen in normal operation!).
.PP
-Definition at line 151 of file inspircd_io.h.
+Definition at line 152 of file inspircd_io.h.
.SS "int \fBServerConfig::LogLevel\fP"
.PP
The loglevel in use by the IRC server.
.PP
-Definition at line 206 of file inspircd_io.h.
+Definition at line 207 of file inspircd_io.h.
.SS "int \fBServerConfig::MaxConn\fP"
.PP
The value to be used for listen() backlogs as default.
.PP
-Definition at line 187 of file inspircd_io.h.
+Definition at line 188 of file inspircd_io.h.
.SS "int \fBServerConfig::MaxWhoResults\fP"
.PP
The maximum number of /WHO results allowed in any single /WHO command.
.PP
-Definition at line 198 of file inspircd_io.h.
+Definition at line 199 of file inspircd_io.h.
.SS "char \fBServerConfig::ModPath\fP[1024]"
.PP
The full path to the modules directory.
.PP
This is either set at compile time, or overridden in the configuration file via the <options> tag.
.PP
-Definition at line 138 of file inspircd_io.h.
+Definition at line 139 of file inspircd_io.h.
.SS "std::vector<\fBstd::string\fP> \fBServerConfig::module_names\fP"
.PP
A list of module names (names only, no paths) which are currently loaded by the server.
.PP
-Definition at line 247 of file inspircd_io.h.
+Definition at line 248 of file inspircd_io.h.
.PP
Referenced by Server::FindModule().
.SS "\fBfile_cache\fP \fBServerConfig::MOTD\fP"
.PP
The MOTD file, cached in a file_cache type.
.PP
-Definition at line 220 of file inspircd_io.h.
+Definition at line 221 of file inspircd_io.h.
.SS "char \fBServerConfig::motd\fP[MAXBUF]"
.PP
The pathname and filename of the message of the day file, as defined by the administrator.
.PP
-Definition at line 107 of file inspircd_io.h.
+Definition at line 108 of file inspircd_io.h.
.SS "char \fBServerConfig::MyExecutable\fP[1024]"
.PP
The full pathname to the executable, as given in argv[0] when the program starts.
.PP
-Definition at line 143 of file inspircd_io.h.
+Definition at line 144 of file inspircd_io.h.
.SS "int \fBServerConfig::NetBufferSize\fP"
.PP
The size of the read() buffer in the user handling code, used to read data into a user's recvQ.
.PP
-Definition at line 182 of file inspircd_io.h.
+Definition at line 183 of file inspircd_io.h.
.SS "char \fBServerConfig::Network\fP[MAXBUF]"
.PP
-Definition at line 74 of file inspircd_io.h.
+Definition at line 75 of file inspircd_io.h.
.PP
-Referenced by Server::GetNetworkName().
+Referenced by FullConnectUser(), and Server::GetNetworkName().
.SS "bool \fBServerConfig::nofork\fP"
.PP
If this value is true, the owner of the server specified -nofork on the command line, causing the daemon to stay in the foreground.
.PP
-Definition at line 158 of file inspircd_io.h.
+Definition at line 159 of file inspircd_io.h.
.SS "char \fBServerConfig::PID\fP[1024]"
.PP
The full pathname and filename of the PID file as defined in the configuration.
.PP
-Definition at line 229 of file inspircd_io.h.
+Definition at line 230 of file inspircd_io.h.
.SS "int \fBServerConfig::ports\fP[255]"
.PP
A list of ports which the server is listening on.
.PP
-Definition at line 251 of file inspircd_io.h.
+Definition at line 252 of file inspircd_io.h.
.SS "char \fBServerConfig::PrefixQuit\fP[MAXBUF]"
.PP
The quit prefix in use, or an empty string.
.PP
-Definition at line 116 of file inspircd_io.h.
+Definition at line 117 of file inspircd_io.h.
.SS "char \fBServerConfig::restartpass\fP[MAXBUF]"
.PP
The admin-configured /RESTART password.
.PP
-Definition at line 102 of file inspircd_io.h.
+Definition at line 103 of file inspircd_io.h.
.SS "\fBfile_cache\fP \fBServerConfig::RULES\fP"
.PP
The RULES file, cached in a file_cache type.
.PP
-Definition at line 224 of file inspircd_io.h.
+Definition at line 225 of file inspircd_io.h.
.SS "char \fBServerConfig::rules\fP[MAXBUF]"
.PP
The pathname and filename of the rules file, as defined by the administrator.
.PP
-Definition at line 112 of file inspircd_io.h.
+Definition at line 113 of file inspircd_io.h.
.SS "char \fBServerConfig::ServerDesc\fP[MAXBUF]"
.PP
Holds the description of the local server as defined by the administrator.
.PP
-Definition at line 79 of file inspircd_io.h.
+Definition at line 80 of file inspircd_io.h.
.PP
Referenced by Server::GetServerDescription().
.SS "char \fBServerConfig::ServerName\fP[MAXBUF]"
.PP
Holds the server name of the local server as defined by the administrator.
.PP
-Definition at line 68 of file inspircd_io.h.
+Definition at line 69 of file inspircd_io.h.
.PP
-Referenced by Server::GetServerName(), and userrec::userrec().
+Referenced by AddClient(), FullConnectUser(), Server::GetServerName(), and userrec::userrec().
.SS "unsigned int \fBServerConfig::SoftLimit\fP"
.PP
The soft limit value assigned to the irc server.
.PP
The IRC server will not allow more than this number of local users.
.PP
-Definition at line 193 of file inspircd_io.h.
+Definition at line 194 of file inspircd_io.h.
+.PP
+Referenced by AddClient().
.SS "bool \fBServerConfig::unlimitcore\fP"
.PP
If this value is true, the owner of the server has chosen to unlimit the coredump size to as large a value as his account settings will allow.
.PP
This is often used when debugging.
.PP
-Definition at line 166 of file inspircd_io.h.
+Definition at line 167 of file inspircd_io.h.
.SH "Author"
.PP
-.TH "SocketEngine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "SocketEngine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT.
.PP
-Referenced by InspSocket::InspSocket(), and InspSocket::Poll().
+Referenced by AddClient(), InspSocket::InspSocket(), and InspSocket::Poll().
.PP
.nf
66 {
.PP
References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT.
.PP
-Referenced by InspSocket::Poll(), and Server::UserToPseudo().
+Referenced by kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo().
.PP
.nf
104 {
-.TH "Version" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Version" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
A class of type Version is returned by the GetVersion method of the \fBModule\fP class.
.PP
-Definition at line 113 of file modules.h.
+Definition at line 131 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Version::Version (int major, int minor, int revision, int build, int flags)"
.PP
-Definition at line 159 of file modules.cpp.
+Definition at line 158 of file modules.cpp.
.PP
.nf
-159 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
+158 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "const int \fBVersion::Build\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Flags\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Major\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Minor\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Revision\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SH "Author"
.PP
-.TH "WhoWasUser" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "WhoWasUser" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
A lightweight userrec used by WHOWAS.
.PP
-Definition at line 332 of file users.h.
+Definition at line 336 of file users.h.
.SH "Member Data Documentation"
.PP
.SS "char \fBWhoWasUser::dhost\fP[160]"
.PP
-Definition at line 337 of file users.h.
+Definition at line 341 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::fullname\fP[MAXGECOS+1]"
.PP
-Definition at line 339 of file users.h.
+Definition at line 343 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::host\fP[160]"
.PP
-Definition at line 338 of file users.h.
+Definition at line 342 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::ident\fP[IDENTMAX+1]"
.PP
-Definition at line 336 of file users.h.
+Definition at line 340 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::nick\fP[NICKMAX]"
.PP
-Definition at line 335 of file users.h.
+Definition at line 339 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::server\fP[256]"
.PP
-Definition at line 340 of file users.h.
+Definition at line 344 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "time_t \fBWhoWasUser::signon\fP"
.PP
-Definition at line 341 of file users.h.
+Definition at line 345 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SH "Author"
.PP
-.TH "XLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "XLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "ZLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ZLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "/home/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "/home/brain/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.in +1c
.ti -1c
+.RI "file \fBaes.h\fP"
+.br
+.ti -1c
.RI "file \fBbase.h\fP"
.br
.ti -1c
-.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
--- /dev/null
+.TH "aes.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+aes.h \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <cstring>\fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "class \fBAES\fP"
+.br
+.RI "\fIThe AES class is a utility class for use in modules and the core for encryption of data. \fP"
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBto64frombits\fP (unsigned char *out, const unsigned char *in, int inlen)"
+.br
+.RI "\fIConvert from binary to base64. \fP"
+.ti -1c
+.RI "int \fBfrom64tobits\fP (char *out, const char *in, int maxlen)"
+.br
+.RI "\fIConvert from base64 to binary Output Input Size of output buffer. \fP"
+.in -1c
+.SH "Function Documentation"
+.PP
+.SS "int from64tobits (char * out, const char * in, int maxlen)"
+.PP
+Convert from base64 to binary Output Input Size of output buffer.
+.PP
+\fBReturns:\fP
+.RS 4
+Number of bytes actually converted
+.RE
+.PP
+
+.SS "void to64frombits (unsigned char * out, const unsigned char * in, int inlen)"
+.PP
+Convert from binary to base64.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIout\fP Output
+.br
+\fIin\fP Input
+.br
+\fIinlen\fP Number of bytes in input buffer
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "base.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "base.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "channels.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "channels.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include <unistd.h>\fP
.br
\fC#include <sys/errno.h>\fP
.PP
.SS "#define nspace std"
.PP
-Definition at line 55 of file channels.cpp.
+Definition at line 54 of file channels.cpp.
.SH "Function Documentation"
.PP
.SS "\fBchanrec\fP* add_channel (\fBuserrec\fP * user, const char * cn, const char * key, bool override)"
.PP
-Definition at line 195 of file channels.cpp.
+Definition at line 194 of file channels.cpp.
.PP
References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ().
.PP
Referenced by Server::JoinUserToChannel().
.PP
.nf
-196 {
-197 if ((!user) || (!cn))
-198 {
-199 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
-200 return 0;
-201 }
-202
-203 int created = 0;
-204 char cname[MAXBUF];
-205 int MOD_RESULT = 0;
-206 strncpy(cname,cn,CHANMAX);
-207
-208 log(DEBUG,'add_channel: %s %s',user->nick,cname);
-209
-210 chanrec* Ptr = FindChan(cname);
-211
-212 if (!Ptr)
-213 {
-214 if (user->fd > -1)
-215 {
-216 MOD_RESULT = 0;
-217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
-218 if (MOD_RESULT == 1)
-219 return NULL;
-220 }
-221 /* create a new one */
-222 chanlist[cname] = new chanrec();
-223 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
-225 chanlist[cname]->created = TIME;
-226 strcpy(chanlist[cname]->topic, '');
-227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
-228 chanlist[cname]->topicset = 0;
-229 Ptr = chanlist[cname];
-230 log(DEBUG,'add_channel: created: %s',cname);
-231 /* set created to 2 to indicate user
-232 * is the first in the channel
-233 * and should be given ops */
-234 created = 2;
-235 }
-236 else
-237 {
-238 /* Already on the channel */
-239 if (has_channel(user,Ptr))
-240 return NULL;
-241
-242 // remote users are allowed us to bypass channel modes
-243 // and bans (used by servers)
-244 if (user->fd > -1)
-245 {
-246 MOD_RESULT = 0;
-247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
-248 if (MOD_RESULT == 1)
-249 {
-250 return NULL;
-251 }
-252 else
-253 {
-254 if (*Ptr->key)
-255 {
-256 MOD_RESULT = 0;
-257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
-258 if (!MOD_RESULT)
-259 {
-260 if (!key)
-261 {
-262 log(DEBUG,'add_channel: no key given in JOIN');
-263 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
-264 return NULL;
-265 }
-266 else
-267 {
-268 if (strcasecmp(key,Ptr->key))
-269 {
-270 log(DEBUG,'add_channel: bad key given in JOIN');
-271 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
-272 return NULL;
-273 }
-274 }
-275 }
-276 }
-277 if (Ptr->binarymodes & CM_INVITEONLY)
-278 {
-279 MOD_RESULT = 0;
+195 {
+196 if ((!user) || (!cn))
+197 {
+198 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
+199 return 0;
+200 }
+201
+202 int created = 0;
+203 char cname[MAXBUF];
+204 int MOD_RESULT = 0;
+205 strncpy(cname,cn,CHANMAX);
+206
+207 log(DEBUG,'add_channel: %s %s',user->nick,cname);
+208
+209 chanrec* Ptr = FindChan(cname);
+210
+211 if (!Ptr)
+212 {
+213 if (user->fd > -1)
+214 {
+215 MOD_RESULT = 0;
+216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
+217 if (MOD_RESULT == 1)
+218 return NULL;
+219 }
+220 /* create a new one */
+221 chanlist[cname] = new chanrec();
+222 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
+224 chanlist[cname]->created = TIME;
+225 strcpy(chanlist[cname]->topic, '');
+226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
+227 chanlist[cname]->topicset = 0;
+228 Ptr = chanlist[cname];
+229 log(DEBUG,'add_channel: created: %s',cname);
+230 /* set created to 2 to indicate user
+231 * is the first in the channel
+232 * and should be given ops */
+233 created = 2;
+234 }
+235 else
+236 {
+237 /* Already on the channel */
+238 if (has_channel(user,Ptr))
+239 return NULL;
+240
+241 // remote users are allowed us to bypass channel modes
+242 // and bans (used by servers)
+243 if (user->fd > -1)
+244 {
+245 MOD_RESULT = 0;
+246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
+247 if (MOD_RESULT == 1)
+248 {
+249 return NULL;
+250 }
+251 else
+252 {
+253 if (*Ptr->key)
+254 {
+255 MOD_RESULT = 0;
+256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
+257 if (!MOD_RESULT)
+258 {
+259 if (!key)
+260 {
+261 log(DEBUG,'add_channel: no key given in JOIN');
+262 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
+263 return NULL;
+264 }
+265 else
+266 {
+267 if (strcasecmp(key,Ptr->key))
+268 {
+269 log(DEBUG,'add_channel: bad key given in JOIN');
+270 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
+271 return NULL;
+272 }
+273 }
+274 }
+275 }
+276 if (Ptr->binarymodes & CM_INVITEONLY)
+277 {
+278 MOD_RESULT = 0;
+279 irc::string xname(Ptr->name);
280 FOREACH_RESULT(OnCheckInvite(user, Ptr));
281 if (!MOD_RESULT)
282 {
283 log(DEBUG,'add_channel: channel is +i');
-284 if (user->IsInvited(Ptr->name))
+284 if (user->IsInvited(xname))
285 {
286 /* user was invited to channel */
287 /* there may be an optional channel NOTICE here */
292 return NULL;
293 }
294 }
-295 user->RemoveInvite(Ptr->name);
+295 user->RemoveInvite(xname);
296 }
297 if (Ptr->limit)
298 {
.PP
.SS "std::vector<\fBModeParameter\fP> \fBcustom_mode_params\fP"
.PP
-Definition at line 70 of file channels.cpp.
+Definition at line 69 of file channels.cpp.
.PP
Referenced by chanrec::GetModeParameter(), and chanrec::SetCustomModeParam().
.SS "std::vector<\fBircd_module\fP*> factory"
.PP
.SS "int \fBMODCOUNT\fP = -1"
.PP
-Definition at line 935 of file modules.cpp.
+Definition at line 934 of file modules.cpp.
.PP
Referenced by Server::FindModule().
.SS "std::vector<\fBModule\fP*> modules"
Referenced by Server::FindModule().
.SS "time_t \fBTIME\fP"
.PP
-Referenced by add_channel(), and userrec::userrec().
+Referenced by add_channel(), AddClient(), AddWhoWas(), FullConnectUser(), and userrec::userrec().
.SS "int \fBWHOWAS_MAX\fP"
.PP
+Referenced by AddWhoWas().
.SS "int \fBWHOWAS_STALE\fP"
.PP
+Referenced by AddWhoWas().
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "channels.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "channels.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
.SS "\fBchanrec\fP* add_channel (\fBuserrec\fP * user, const char * cn, const char * key, bool override)"
.PP
-Definition at line 195 of file channels.cpp.
+Definition at line 194 of file channels.cpp.
.PP
References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ().
.PP
Referenced by Server::JoinUserToChannel().
.PP
.nf
-196 {
-197 if ((!user) || (!cn))
-198 {
-199 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
-200 return 0;
-201 }
-202
-203 int created = 0;
-204 char cname[MAXBUF];
-205 int MOD_RESULT = 0;
-206 strncpy(cname,cn,CHANMAX);
-207
-208 log(DEBUG,'add_channel: %s %s',user->nick,cname);
-209
-210 chanrec* Ptr = FindChan(cname);
-211
-212 if (!Ptr)
-213 {
-214 if (user->fd > -1)
-215 {
-216 MOD_RESULT = 0;
-217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
-218 if (MOD_RESULT == 1)
-219 return NULL;
-220 }
-221 /* create a new one */
-222 chanlist[cname] = new chanrec();
-223 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
-225 chanlist[cname]->created = TIME;
-226 strcpy(chanlist[cname]->topic, '');
-227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
-228 chanlist[cname]->topicset = 0;
-229 Ptr = chanlist[cname];
-230 log(DEBUG,'add_channel: created: %s',cname);
-231 /* set created to 2 to indicate user
-232 * is the first in the channel
-233 * and should be given ops */
-234 created = 2;
-235 }
-236 else
-237 {
-238 /* Already on the channel */
-239 if (has_channel(user,Ptr))
-240 return NULL;
-241
-242 // remote users are allowed us to bypass channel modes
-243 // and bans (used by servers)
-244 if (user->fd > -1)
-245 {
-246 MOD_RESULT = 0;
-247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
-248 if (MOD_RESULT == 1)
-249 {
-250 return NULL;
-251 }
-252 else
-253 {
-254 if (*Ptr->key)
-255 {
-256 MOD_RESULT = 0;
-257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
-258 if (!MOD_RESULT)
-259 {
-260 if (!key)
-261 {
-262 log(DEBUG,'add_channel: no key given in JOIN');
-263 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
-264 return NULL;
-265 }
-266 else
-267 {
-268 if (strcasecmp(key,Ptr->key))
-269 {
-270 log(DEBUG,'add_channel: bad key given in JOIN');
-271 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
-272 return NULL;
-273 }
-274 }
-275 }
-276 }
-277 if (Ptr->binarymodes & CM_INVITEONLY)
-278 {
-279 MOD_RESULT = 0;
+195 {
+196 if ((!user) || (!cn))
+197 {
+198 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
+199 return 0;
+200 }
+201
+202 int created = 0;
+203 char cname[MAXBUF];
+204 int MOD_RESULT = 0;
+205 strncpy(cname,cn,CHANMAX);
+206
+207 log(DEBUG,'add_channel: %s %s',user->nick,cname);
+208
+209 chanrec* Ptr = FindChan(cname);
+210
+211 if (!Ptr)
+212 {
+213 if (user->fd > -1)
+214 {
+215 MOD_RESULT = 0;
+216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
+217 if (MOD_RESULT == 1)
+218 return NULL;
+219 }
+220 /* create a new one */
+221 chanlist[cname] = new chanrec();
+222 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
+224 chanlist[cname]->created = TIME;
+225 strcpy(chanlist[cname]->topic, '');
+226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
+227 chanlist[cname]->topicset = 0;
+228 Ptr = chanlist[cname];
+229 log(DEBUG,'add_channel: created: %s',cname);
+230 /* set created to 2 to indicate user
+231 * is the first in the channel
+232 * and should be given ops */
+233 created = 2;
+234 }
+235 else
+236 {
+237 /* Already on the channel */
+238 if (has_channel(user,Ptr))
+239 return NULL;
+240
+241 // remote users are allowed us to bypass channel modes
+242 // and bans (used by servers)
+243 if (user->fd > -1)
+244 {
+245 MOD_RESULT = 0;
+246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
+247 if (MOD_RESULT == 1)
+248 {
+249 return NULL;
+250 }
+251 else
+252 {
+253 if (*Ptr->key)
+254 {
+255 MOD_RESULT = 0;
+256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
+257 if (!MOD_RESULT)
+258 {
+259 if (!key)
+260 {
+261 log(DEBUG,'add_channel: no key given in JOIN');
+262 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
+263 return NULL;
+264 }
+265 else
+266 {
+267 if (strcasecmp(key,Ptr->key))
+268 {
+269 log(DEBUG,'add_channel: bad key given in JOIN');
+270 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
+271 return NULL;
+272 }
+273 }
+274 }
+275 }
+276 if (Ptr->binarymodes & CM_INVITEONLY)
+277 {
+278 MOD_RESULT = 0;
+279 irc::string xname(Ptr->name);
280 FOREACH_RESULT(OnCheckInvite(user, Ptr));
281 if (!MOD_RESULT)
282 {
283 log(DEBUG,'add_channel: channel is +i');
-284 if (user->IsInvited(Ptr->name))
+284 if (user->IsInvited(xname))
285 {
286 /* user was invited to channel */
287 /* there may be an optional channel NOTICE here */
292 return NULL;
293 }
294 }
-295 user->RemoveInvite(Ptr->name);
+295 user->RemoveInvite(xname);
296 }
297 if (Ptr->limit)
298 {
-.TH "chanrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "chanrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
Creates a channel record and initialises it with default values.
.PP
-Definition at line 74 of file channels.cpp.
+Definition at line 73 of file channels.cpp.
.PP
References binarymodes, created, custom_modes, internal_userlist, key, limit, name, setby, topic, and topicset.
.PP
.nf
-75 {
-76 strcpy(name,'');
-77 strcpy(custom_modes,'');
-78 strcpy(topic,'');
-79 strcpy(setby,'');
-80 strcpy(key,'');
-81 created = topicset = limit = 0;
-82 binarymodes = 0;
-83 internal_userlist.clear();
-84 }
+74 {
+75 strcpy(name,'');
+76 strcpy(custom_modes,'');
+77 strcpy(topic,'');
+78 strcpy(setby,'');
+79 strcpy(key,'');
+80 created = topicset = limit = 0;
+81 binarymodes = 0;
+82 internal_userlist.clear();
+83 }
.fi
.PP
.SS "virtual chanrec::~chanrec ()\fC [inline, virtual]\fP"
.PP
The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
.PP
-Definition at line 167 of file channels.cpp.
+Definition at line 166 of file channels.cpp.
.PP
References DEBUG, internal_userlist, and log().
.PP
Referenced by ForceChan().
.PP
.nf
-168 {
-169 internal_userlist.push_back(castuser);
-170 log(DEBUG,'Added casted user to channel's internal list');
-171 }
+167 {
+168 internal_userlist.push_back(castuser);
+169 log(DEBUG,'Added casted user to channel's internal list');
+170 }
.fi
.PP
.SS "void chanrec::DelUser (char * castuser)"
.PP
The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
.PP
-Definition at line 173 of file channels.cpp.
+Definition at line 172 of file channels.cpp.
.PP
References DEBUG, internal_userlist, log(), and name.
.PP
Referenced by del_channel(), and kick_channel().
.PP
.nf
-174 {
-175 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++)
-176 {
-177 if (*a == castuser)
-178 {
-179 log(DEBUG,'Removed casted user from channel's internal list');
-180 internal_userlist.erase(a);
-181 return;
-182 }
-183 }
-184 log(DEBUG,'BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!',name);
-185 }
+173 {
+174 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++)
+175 {
+176 if (*a == castuser)
+177 {
+178 log(DEBUG,'Removed casted user from channel's internal list');
+179 internal_userlist.erase(a);
+180 return;
+181 }
+182 }
+183 log(DEBUG,'BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!',name);
+184 }
.fi
.PP
.SS "\fBstd::string\fP chanrec::GetModeParameter (char mode)"
.PP
.PP
-Definition at line 147 of file channels.cpp.
+Definition at line 146 of file channels.cpp.
.PP
References custom_mode_params.
.PP
.nf
-148 {
-149 if (custom_mode_params.size())
-150 {
-151 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
-152 {
-153 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-154 {
-155 return i->parameter;
-156 }
-157 }
-158 }
-159 return '';
-160 }
+147 {
+148 if (custom_mode_params.size())
+149 {
+150 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
+151 {
+152 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+153 {
+154 return i->parameter;
+155 }
+156 }
+157 }
+158 return '';
+159 }
.fi
.PP
.SS "long chanrec::GetUserCounter ()"
.PP
.PP
-Definition at line 162 of file channels.cpp.
+Definition at line 161 of file channels.cpp.
.PP
.nf
-163 {
-164 return (this->internal_userlist.size());
-165 }
+162 {
+163 return (this->internal_userlist.size());
+164 }
.fi
.PP
.SS "std::vector< char * > * chanrec::GetUsers ()"
.PP
.PP
-Definition at line 187 of file channels.cpp.
+Definition at line 186 of file channels.cpp.
.PP
References internal_userlist.
.PP
Referenced by Server::GetUsers().
.PP
.nf
-188 {
-189 return &internal_userlist;
-190 }
+187 {
+188 return &internal_userlist;
+189 }
.fi
.PP
.SS "bool chanrec::IsCustomModeSet (char mode)"
.PP
.PP
-Definition at line 142 of file channels.cpp.
+Definition at line 141 of file channels.cpp.
.PP
.nf
-143 {
-144 return (strchr(this->custom_modes,mode));
-145 }
+142 {
+143 return (strchr(this->custom_modes,mode));
+144 }
.fi
.PP
.SS "void chanrec::SetCustomMode (char mode, bool mode_on)"
.PP
.PP
-Definition at line 86 of file channels.cpp.
+Definition at line 85 of file channels.cpp.
.PP
References custom_modes, DEBUG, log(), and SetCustomModeParam().
.PP
.nf
-87 {
-88 if (mode_on) {
-89 static char m[3];
-90 m[0] = mode;
-91 m[1] = '\0';
-92 if (!strchr(this->custom_modes,mode))
-93 {
-94 strlcat(custom_modes,m,MAXMODES);
-95 }
-96 log(DEBUG,'Custom mode %c set',mode);
-97 }
-98 else {
-99
-100 std::string a = this->custom_modes;
-101 int pos = a.find(mode);
-102 a.erase(pos,1);
-103 strncpy(this->custom_modes,a.c_str(),MAXMODES);
-104
-105 log(DEBUG,'Custom mode %c removed: modelist='%s'',mode,this->custom_modes);
-106 this->SetCustomModeParam(mode,'',false);
-107 }
-108 }
+86 {
+87 if (mode_on) {
+88 static char m[3];
+89 m[0] = mode;
+90 m[1] = '\0';
+91 if (!strchr(this->custom_modes,mode))
+92 {
+93 strlcat(custom_modes,m,MAXMODES);
+94 }
+95 log(DEBUG,'Custom mode %c set',mode);
+96 }
+97 else {
+98
+99 std::string a = this->custom_modes;
+100 int pos = a.find(mode);
+101 a.erase(pos,1);
+102 strncpy(this->custom_modes,a.c_str(),MAXMODES);
+103
+104 log(DEBUG,'Custom mode %c removed: modelist='%s'',mode,this->custom_modes);
+105 this->SetCustomModeParam(mode,'',false);
+106 }
+107 }
.fi
.PP
.SS "void chanrec::SetCustomModeParam (char mode, char * parameter, bool mode_on)"
.PP
.PP
-Definition at line 111 of file channels.cpp.
+Definition at line 110 of file channels.cpp.
.PP
References ModeParameter::channel, custom_mode_params, DEBUG, log(), ModeParameter::mode, and ModeParameter::parameter.
.PP
Referenced by SetCustomMode().
.PP
.nf
-112 {
-113
-114 log(DEBUG,'SetCustomModeParam called');
-115 ModeParameter M;
-116 M.mode = mode;
-117 strlcpy(M.channel,this->name,CHANMAX);
-118 strlcpy(M.parameter,parameter,MAXBUF);
-119 if (mode_on)
-120 {
-121 log(DEBUG,'Custom mode parameter %c %s added',mode,parameter);
-122 custom_mode_params.push_back(M);
-123 }
-124 else
-125 {
-126 if (custom_mode_params.size())
-127 {
-128 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
-129 {
-130 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-131 {
-132 log(DEBUG,'Custom mode parameter %c %s removed',mode,parameter);
-133 custom_mode_params.erase(i);
-134 return;
-135 }
-136 }
-137 }
-138 log(DEBUG,'*** BUG *** Attempt to remove non-existent mode parameter!');
-139 }
-140 }
+111 {
+112
+113 log(DEBUG,'SetCustomModeParam called');
+114 ModeParameter M;
+115 M.mode = mode;
+116 strlcpy(M.channel,this->name,CHANMAX);
+117 strlcpy(M.parameter,parameter,MAXBUF);
+118 if (mode_on)
+119 {
+120 log(DEBUG,'Custom mode parameter %c %s added',mode,parameter);
+121 custom_mode_params.push_back(M);
+122 }
+123 else
+124 {
+125 if (custom_mode_params.size())
+126 {
+127 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
+128 {
+129 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+130 {
+131 log(DEBUG,'Custom mode parameter %c %s removed',mode,parameter);
+132 custom_mode_params.erase(i);
+133 return;
+134 }
+135 }
+136 }
+137 log(DEBUG,'*** BUG *** Attempt to remove non-existent mode parameter!');
+138 }
+139 }
.fi
.PP
.SH "Member Data Documentation"
-.TH "classbase" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "classbase" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "command_t" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "command_t" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
\fC#include <ctables.h>\fP
.PP
-Inherits \fBExtensible\fP.
+Inherited by \fBcmd_mode\fP.
.PP
-.SS "Public Attributes"
+.SS "Public Member Functions"
.in +1c
.ti -1c
-.RI "char \fBcommand\fP [MAXBUF]"
+.RI "\fBcommand_t\fP (\fBstd::string\fP cmd, char flags, int minpara)"
.br
-.RI "\fICommand name. \fP"
.ti -1c
-.RI "\fBhandlerfunc\fP * \fBhandler_function\fP"
+.RI "virtual void \fBHandle\fP (char **parameters, int pcnt, \fBuserrec\fP *user)=0"
+.br
+.ti -1c
+.RI "virtual \fB~command_t\fP ()"
+.br
+.in -1c
+.SS "Public Attributes"
+
+.in +1c
+.ti -1c
+.RI "\fBstd::string\fP \fBcommand\fP"
.br
-.RI "\fIHandler function as in typedef. \fP"
+.RI "\fICommand name. \fP"
.ti -1c
.RI "char \fBflags_needed\fP"
.br
.br
.RI "\fIused by /stats m \fP"
.ti -1c
-.RI "char \fBsource\fP [MAXBUF]"
+.RI "\fBstd::string\fP \fBsource\fP"
.br
.RI "\fIused for resource tracking between modules \fP"
.in -1c
.PP
A structure that defines a command.
.PP
-Definition at line 26 of file ctables.h.
+Definition at line 29 of file ctables.h.
+.SH "Constructor & Destructor Documentation"
+.PP
+.SS "command_t::command_t (\fBstd::string\fP cmd, char flags, int minpara)\fC [inline]\fP"
+.PP
+Definition at line 51 of file ctables.h.
+.PP
+References source, total_bytes, and use_count.
+.PP
+.nf
+51 : command(cmd), flags_needed(flags), min_params(minpara)
+52 {
+53 use_count = total_bytes = 0;
+54 source = '<core>';
+55 }
+.fi
+.PP
+.SS "virtual command_t::~command_t ()\fC [inline, virtual]\fP"
+.PP
+Definition at line 59 of file ctables.h.
+.PP
+.nf
+59 {}
+.fi
+.PP
+.SH "Member Function Documentation"
+.PP
+.SS "virtual void command_t::Handle (char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [pure virtual]\fP"
+.PP
+Implemented in \fBcmd_mode\fP.
.SH "Member Data Documentation"
.PP
-.SS "char \fBcommand_t::command\fP[MAXBUF]"
+.SS "\fBstd::string\fP \fBcommand_t::command\fP"
.PP
Command name.
.PP
-Definition at line 31 of file ctables.h.
+Definition at line 34 of file ctables.h.
.SS "char \fBcommand_t::flags_needed\fP"
.PP
User flags needed to execute the command or 0.
.PP
Definition at line 37 of file ctables.h.
-.SS "\fBhandlerfunc\fP* \fBcommand_t::handler_function\fP"
-.PP
-Handler function as in typedef.
-.PP
-Definition at line 34 of file ctables.h.
.SS "int \fBcommand_t::min_params\fP"
.PP
Minimum number of parameters command takes.
.PP
Definition at line 40 of file ctables.h.
-.SS "char \fBcommand_t::source\fP[MAXBUF]"
+.SS "\fBstd::string\fP \fBcommand_t::source\fP"
.PP
used for resource tracking between modules
.PP
Definition at line 49 of file ctables.h.
+.PP
+Referenced by command_t().
.SS "long \fBcommand_t::total_bytes\fP"
.PP
used by /stats m
.PP
Definition at line 46 of file ctables.h.
+.PP
+Referenced by command_t().
.SS "long \fBcommand_t::use_count\fP"
.PP
used by /stats m
.PP
Definition at line 43 of file ctables.h.
+.PP
+Referenced by command_t().
.SH "Author"
.PP
-.TH "commands.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "commands.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'channels.h'\fP
.br
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBhandle_join\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_admin.h'\fP
.br
-.RI "\fIThese are the handlers for user commands. \fP"
-.ti -1c
-.RI "void \fBhandle_part\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_away.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_kick\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_commands.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_die\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_connect.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_restart\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_die.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_kill\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_eline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_summon\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_gline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_users\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_info.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_pass\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_invite.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_invite\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_ison.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_topic\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_join.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_names\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_kick.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_privmsg\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_kill.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_notice\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_kline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_info\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_links.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_time\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_list.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_whois\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_loadmodule.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_quit\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_lusers.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_who\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_map.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_wallops\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_modules.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_list\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_motd.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_rehash\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_names.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_lusers\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_nick.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_admin\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_notice.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_ping\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_oper.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_pong\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_part.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_motd\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_pass.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_rules\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_ping.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_user\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_pong.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_userhost\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_privmsg.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_ison\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_qline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_away\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_quit.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_whowas\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_rehash.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_trace\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_restart.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_modules\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_rules.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_stats\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_server.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_connect\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_squit.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_squit\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_stats.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_links\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_summon.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_map\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_time.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_oper\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_topic.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_nick\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_trace.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_kline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_unloadmodule.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_gline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_user.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_zline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_userhost.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_qline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_users.h'\fP
+.br
+\fC#include 'cmd_version.h'\fP
+.br
+\fC#include 'cmd_wallops.h'\fP
+.br
+\fC#include 'cmd_who.h'\fP
+.br
+\fC#include 'cmd_whois.h'\fP
.br
+\fC#include 'cmd_whowas.h'\fP
+.br
+\fC#include 'cmd_zline.h'\fP
+.br
+
+.SS "Functions"
+
+.in +1c
.ti -1c
-.RI "void \fBhandle_eline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "char * \fBCleanFilename\fP (char *name)"
.br
.ti -1c
-.RI "void \fBhandle_server\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "bool \fBis_uline\fP (const char *server)"
.br
.ti -1c
-.RI "void \fBhandle_loadmodule\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "long \fBduration\fP (const char *str)"
.br
.ti -1c
-.RI "void \fBhandle_unloadmodule\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "void \fBdo_whois\fP (\fBuserrec\fP *user, \fBuserrec\fP *dest, unsigned long signon, unsigned long idle, char *nick)"
.br
.ti -1c
-.RI "void \fBhandle_commands\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "bool \fBhost_matches_everyone\fP (\fBstd::string\fP mask, \fBuserrec\fP *user)"
.br
.ti -1c
-.RI "bool \fBis_uline\fP (const char *server)"
+.RI "bool \fBip_matches_everyone\fP (\fBstd::string\fP ip, \fBuserrec\fP *user)"
.br
-.RI "\fIFunctions for u:lined servers. \fP"
.ti -1c
-.RI "long \fBduration\fP (const char *str)"
+.RI "bool \fBnick_matches_everyone\fP (\fBstd::string\fP nick, \fBuserrec\fP *user)"
.br
-.RI "\fIOther useful functions. \fP"
.ti -1c
-.RI "void \fBdo_whois\fP (\fBuserrec\fP *user, \fBuserrec\fP *dest, unsigned long signon, unsigned long idle, char *nick)"
+.RI "int \fBoperstrcmp\fP (char *data, char *input)"
.br
.in -1c
.SH "Function Documentation"
.PP
+.SS "char* CleanFilename (char * name)"
+.PP
.SS "void do_whois (\fBuserrec\fP * user, \fBuserrec\fP * dest, unsigned long signon, unsigned long idle, char * nick)"
.PP
.SS "long duration (const char * str)"
.PP
-Other useful functions.
-.PP
Referenced by Server::CalcDuration().
-.SS "void handle_admin (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_away (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_commands (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_connect (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_die (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_eline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_gline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_info (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_invite (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_ison (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_join (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-These are the handlers for user commands.
-.PP
-.SS "void handle_kick (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_kill (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_kline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_links (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_list (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_loadmodule (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_lusers (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_map (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_modules (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_motd (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_names (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_nick (char ** parameters, int pcnt, \fBuserrec\fP * user)"
+.SS "bool host_matches_everyone (\fBstd::string\fP mask, \fBuserrec\fP * user)"
.PP
-.SS "void handle_notice (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_oper (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_part (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_pass (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_ping (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_pong (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_privmsg (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_qline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_quit (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_rehash (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_restart (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_rules (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_server (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_squit (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_stats (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_summon (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_time (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_topic (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_trace (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_unloadmodule (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_user (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_userhost (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_users (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_wallops (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_who (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_whois (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_whowas (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_zline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
+.SS "bool ip_matches_everyone (\fBstd::string\fP ip, \fBuserrec\fP * user)"
.PP
.SS "bool is_uline (const char * server)"
.PP
-Functions for u:lined servers.
-.PP
Referenced by userrec::HasPermission(), Server::IsUlined(), and kick_channel().
+.SS "bool nick_matches_everyone (\fBstd::string\fP nick, \fBuserrec\fP * user)"
+.PP
+.SS "int operstrcmp (char * data, char * input)"
+.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "connection" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "connection" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
Definition at line 42 of file connection.h.
.PP
-Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), kick_channel(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo().
+Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo().
.SS "bool \fBconnection::haspassed\fP"
.PP
True if server/user has authenticated, false if otherwise.
.PP
Definition at line 70 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), and userrec::userrec().
.SS "char \fBconnection::host\fP[160]"
.PP
Hostname of connection.
.PP
Definition at line 46 of file connection.h.
.PP
-Referenced by userrec::GetFullRealHost(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo().
+Referenced by AddWhoWas(), FullConnectUser(), userrec::GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo().
.SS "time_t \fBconnection::idle_lastmsg\fP"
.PP
Time that the connection last sent data, used to calculate idle time.
.PP
Definition at line 92 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), and userrec::userrec().
.SS "char \fBconnection::ip\fP[16]"
.PP
IP of connection.
.PP
Definition at line 50 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), and userrec::userrec().
.SS "time_t \fBconnection::lastping\fP"
.PP
Time the connection was last pinged.
.PP
Definition at line 76 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec().
.SS "char \fBconnection::registered\fP"
.PP
Used by userrec to indicate the registration status of the connection.
.PP
Definition at line 80 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by ConnectUser(), force_nickchange(), FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec().
.SS "time_t \fBconnection::signon\fP"
.PP
Time the connection was created, set in the constructor.
.PP
Definition at line 88 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by AddWhoWas(), and userrec::userrec().
.SH "Author"
.PP
-.TH "connection.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "connection.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "ctables.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ctables.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
\fC#include 'inspircd_config.h'\fP
.br
-\fC#include 'inspircd.h'\fP
-.br
-\fC#include 'base.h'\fP
+\fC#include <deque>\fP
.br
.SS "Classes"
.br
.RI "\fIA structure that defines a command. \fP"
.in -1c
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef std::deque< \fBcommand_t\fP * > \fBcommand_table\fP"
+.br
+.in -1c
+.SH "Typedef Documentation"
+.PP
+.SS "typedef std::deque<\fBcommand_t\fP*> \fBcommand_table\fP"
+.PP
+Definition at line 62 of file ctables.h.
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "cull_list.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "cull_list.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "dns.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "dns.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
.RI "\fIThe DNS class allows fast nonblocking resolution of hostnames and ip addresses. \fP"
.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void * \fBdns_task\fP (void *arg)"
+.br
+.RI "\fIThis is the handler function for multi-threaded \fBDNS\fP. \fP"
+.in -1c
+.SH "Function Documentation"
+.PP
+.SS "void* dns_task (void * arg)"
+.PP
+This is the handler function for multi-threaded \fBDNS\fP.
+.PP
+It cannot be a class member as pthread will not let us create a thread whos handler function is a member of a class (ugh).
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "dns_ip4list" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "dns_ip4list" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "globals.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "globals.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
Referenced by Server::IsNick().
.SS "void log (int level, char * text, ...)"
.PP
-Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), Server::Log(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
+Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), Server::Log(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
.SS "int ModeDefiend (char c, int i)"
.PP
.SS "void readfile (\fBfile_cache\fP & F, const char * fname)"
Referenced by FileReader::FileReader(), and FileReader::LoadFile().
.SS "void Write (int sock, char * text, ...)"
.PP
-Referenced by Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo().
+Referenced by kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo().
.SS "void WriteChannel (\fBchanrec\fP * Ptr, \fBuserrec\fP * user, char * text, ...)"
.PP
Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChannel().
Referenced by Server::SendCommon().
.SS "void WriteCommonExcept (\fBuserrec\fP * u, char * text, ...)"
.PP
-Referenced by Server::SendCommon().
+Referenced by kill_link(), kill_link_silent(), and Server::SendCommon().
.SS "void WriteFrom (int sock, \fBuserrec\fP * user, char * text, ...)"
.PP
Referenced by Server::PseudoToUser(), and Server::SendFrom().
.SS "void WriteOpers (char * text, ...)"
.PP
-Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), Server::RehashServer(), and Server::SendOpers().
+Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), FullConnectUser(), kill_link(), Server::RehashServer(), and Server::SendOpers().
.SS "void WriteServ (int sock, char * text, ...)"
.PP
-Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), kick_channel(), Server::PseudoToUser(), and Server::SendServ().
+Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), FullConnectUser(), kick_channel(), Server::PseudoToUser(), and Server::SendServ().
.SS "void WriteTo (\fBuserrec\fP * source, \fBuserrec\fP * dest, char * data, ...)"
.PP
Referenced by Server::SendTo().
-.TH "hashcomp.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "hashcomp.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "inspircd.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "inspircd.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include 'users.h'\fP
.br
\fC#include 'channels.h'\fP
.br
\fC#include 'socket.h'\fP
.br
+\fC#include 'mode.h'\fP
+.br
+\fC#include 'socketengine.h'\fP
+.br
+\fC#include 'command_parse.h'\fP
+.br
.SS "Classes"
.ti -1c
.RI "#define \fBMAXCOMMAND\fP 32"
.br
-.ti -1c
-.RI "#define \fBWM_AND\fP 1"
-.br
-.ti -1c
-.RI "#define \fBWM_OR\fP 2"
-.br
-.ti -1c
-.RI "#define \fBTYPE_USER\fP 1"
-.br
-.ti -1c
-.RI "#define \fBTYPE_CHANNEL\fP 2"
-.br
-.ti -1c
-.RI "#define \fBTYPE_SERVER\fP 3"
-.br
-.ti -1c
-.RI "#define \fBIS_LOCAL\fP(x) (x->fd > -1)"
-.br
-.ti -1c
-.RI "#define \fBIS_REMOTE\fP(x) (x->fd < 0)"
-.br
-.ti -1c
-.RI "#define \fBIS_MODULE_CREATED\fP(x) (x->fd == FD_MAGIC_NUMBER)"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef void( \fBhandlerfunc\fP )(char **, int, \fBuserrec\fP *)"
-.br
.in -1c
.SS "Functions"
.in +1c
.ti -1c
-.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)"
-.br
-.ti -1c
-.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)"
-.br
-.ti -1c
-.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)"
-.br
-.ti -1c
-.RI "void \fBcall_handler\fP (const char *commandname, char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "bool \fBis_valid_cmd\fP (const char *commandname, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "int \fBloop_call\fP (\fBhandlerfunc\fP fn, char **parameters, int pcnt, \fBuserrec\fP *u, int start, int end, int joins)"
-.br
-.ti -1c
-.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)"
-.br
-.ti -1c
-.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)"
-.br
-.ti -1c
-.RI "void \fBAddOper\fP (\fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBhandle_version\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
.RI "void \fBAddServerName\fP (\fBstd::string\fP servername)"
.br
.ti -1c
.RI "const char * \fBFindServerNamePtr\fP (\fBstd::string\fP servername)"
.br
-.ti -1c
-.RI "void * \fBdns_task\fP (void *arg)"
-.br
-.ti -1c
-.RI "void \fBprocess_buffer\fP (const char *cmdbuf, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)"
-.br
.in -1c
.SH "Define Documentation"
.PP
.SS "#define ERROR -1"
.PP
-Definition at line 49 of file inspircd.h.
+Definition at line 51 of file inspircd.h.
.PP
Referenced by InspSocket::InspSocket().
.SS "#define FALSE 0"
.PP
-Definition at line 51 of file inspircd.h.
-.SS "#define IS_LOCAL(x) (x->fd > -1)"
-.PP
-Definition at line 66 of file inspircd.h.
-.SS "#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)"
-.PP
-Definition at line 68 of file inspircd.h.
-.SS "#define IS_REMOTE(x) (x->fd < 0)"
-.PP
-Definition at line 67 of file inspircd.h.
+Definition at line 53 of file inspircd.h.
.SS "#define MAXCOMMAND 32"
.PP
-Definition at line 53 of file inspircd.h.
+Definition at line 55 of file inspircd.h.
.SS "#define MAXSOCKS 64"
.PP
-Definition at line 52 of file inspircd.h.
+Definition at line 54 of file inspircd.h.
.SS "#define TRUE 1"
.PP
-Definition at line 50 of file inspircd.h.
-.SS "#define TYPE_CHANNEL 2"
-.PP
-Definition at line 63 of file inspircd.h.
-.SS "#define TYPE_SERVER 3"
-.PP
-Definition at line 64 of file inspircd.h.
-.SS "#define TYPE_USER 1"
-.PP
-Definition at line 62 of file inspircd.h.
-.SS "#define WM_AND 1"
-.PP
-Definition at line 57 of file inspircd.h.
-.SS "#define WM_OR 2"
-.PP
-Definition at line 58 of file inspircd.h.
-.SH "Typedef Documentation"
-.PP
-.SS "typedef void( \fBhandlerfunc\fP)(char **, int, \fBuserrec\fP *)"
-.PP
-Definition at line 70 of file inspircd.h.
+Definition at line 52 of file inspircd.h.
.SH "Function Documentation"
.PP
-.SS "void AddOper (\fBuserrec\fP * user)"
-.PP
.SS "void AddServerName (\fBstd::string\fP servername)"
.PP
-.SS "void AddWhoWas (\fBuserrec\fP * u)"
-.PP
-.SS "void call_handler (const char * commandname, char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-Referenced by Server::CallCommandHandler().
-.SS "void ConnectUser (\fBuserrec\fP * user)"
-.PP
-.SS "void DeleteOper (\fBuserrec\fP * user)"
-.PP
-.SS "void* dns_task (void * arg)"
-.PP
.SS "const char* FindServerNamePtr (\fBstd::string\fP servername)"
.PP
-Referenced by userrec::userrec().
-.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)"
-.PP
-Referenced by Server::ChangeUserNick().
-.SS "void FullConnectUser (\fBuserrec\fP * user)"
-.PP
-.SS "void handle_version (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "bool is_valid_cmd (const char * commandname, int pcnt, \fBuserrec\fP * user)"
-.PP
-Referenced by Server::IsValidModuleCommand().
-.SS "void kill_link (\fBuserrec\fP * user, const char * r)"
-.PP
-Referenced by Server::PseudoToUser(), and Server::QuitUser().
-.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)"
-.PP
-.SS "int loop_call (\fBhandlerfunc\fP fn, char ** parameters, int pcnt, \fBuserrec\fP * u, int start, int end, int joins)"
-.PP
-.SS "void process_buffer (const char * cmdbuf, \fBuserrec\fP * user)"
-.PP
-.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)"
-.PP
+Referenced by AddClient(), and userrec::userrec().
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "inspircd_io.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "inspircd_io.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'globals.h'\fP
.br
+\fC#include 'modules.h'\fP
+.br
.SS "Classes"
.PP
Flags for use with \fBlog()\fP.
.PP
-Definition at line 28 of file inspircd_io.h.
+Definition at line 29 of file inspircd_io.h.
.PP
-Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
+Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
.SS "#define DEFAULT 30"
.PP
-Definition at line 30 of file inspircd_io.h.
+Definition at line 31 of file inspircd_io.h.
.PP
Referenced by add_channel(), del_channel(), and kick_channel().
.SS "#define NONE 50"
.PP
-Definition at line 32 of file inspircd_io.h.
+Definition at line 33 of file inspircd_io.h.
.SS "#define SPARSE 40"
.PP
-Definition at line 31 of file inspircd_io.h.
+Definition at line 32 of file inspircd_io.h.
.SS "#define VERBOSE 20"
.PP
-Definition at line 29 of file inspircd_io.h.
+Definition at line 30 of file inspircd_io.h.
.SH "Function Documentation"
.PP
.SS "int BindPorts ()"
-.TH "irc" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "irc::InAddr_HashComp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc::InAddr_HashComp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "irc::StrHashComp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc::StrHashComp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "irc::irc_char_traits" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc::irc_char_traits" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "message.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "message.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "mode.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "mode.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'channels.h'\fP
.br
+\fC#include 'ctables.h'\fP
+.br
-.SS "Functions"
+.SS "Classes"
.in +1c
.ti -1c
-.RI "char * \fBgive_ops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBgive_hops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBgive_voice\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_ops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_hops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_voice\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
+.RI "class \fBModeParser\fP"
.br
.ti -1c
-.RI "char * \fBadd_ban\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_ban\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "void \fBprocess_modes\fP (char **parameters, \fBuserrec\fP *user, \fBchanrec\fP *chan, int status, int pcnt, bool servermode, bool silent, bool local)"
-.br
-.ti -1c
-.RI "bool \fBallowed_umode\fP (char umode, char *sourcemodes, bool adding)"
-.br
-.ti -1c
-.RI "bool \fBprocess_module_umode\fP (char umode, \fBuserrec\fP *source, void *dest, bool adding)"
-.br
-.ti -1c
-.RI "void \fBhandle_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBserver_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBmerge_mode\fP (char **parameters, int pcnt)"
-.br
-.ti -1c
-.RI "void \fBmerge_mode2\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "class \fBcmd_mode\fP"
.br
.in -1c
-.SH "Function Documentation"
-.PP
-.SS "char* add_ban (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "bool allowed_umode (char umode, char * sourcemodes, bool adding)"
-.PP
-.SS "char* give_hops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* give_ops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* give_voice (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "void handle_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void merge_mode (char ** parameters, int pcnt)"
-.PP
-.SS "void merge_mode2 (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void process_modes (char ** parameters, \fBuserrec\fP * user, \fBchanrec\fP * chan, int status, int pcnt, bool servermode, bool silent, bool local)"
-.PP
-.SS "bool process_module_umode (char umode, \fBuserrec\fP * source, void * dest, bool adding)"
-.PP
-.SS "void server_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-Referenced by Server::SendMode().
-.SS "char* take_ban (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* take_hops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* take_ops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* take_voice (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "modules.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "modules.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include <unistd.h>\fP
.br
\fC#include <sys/errno.h>\fP
.br
\fC#include 'typedefs.h'\fP
.br
+\fC#include 'command_parse.h'\fP
+.br
.SS "Functions"
.in +1c
.ti -1c
-.RI "\fBSocketEngine\fP * \fBSE\fP"
-.br
-.ti -1c
.RI "\fBServerConfig\fP * \fBConfig\fP"
.br
.ti -1c
.PP
.SS "bool DoAddExtendedMode (char modechar, int type, bool requires_oper, int params_on, int params_off)"
.PP
-Definition at line 134 of file modules.cpp.
+Definition at line 133 of file modules.cpp.
.PP
References EMode, and ModeDefined().
.PP
Referenced by Server::AddExtendedListMode(), and Server::AddExtendedMode().
.PP
.nf
-135 {
-136 if (ModeDefined(modechar,type)) {
-137 return false;
-138 }
-139 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off));
-140 return true;
-141 }
+134 {
+135 if (ModeDefined(modechar,type)) {
+136 return false;
+137 }
+138 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off));
+139 return true;
+140 }
.fi
.PP
.SS "std::vector<\fBircd_module\fP*> factory (255)"
.PP
.SS "bool ModeDefined (char modechar, int type)"
.PP
-Definition at line 71 of file modules.cpp.
+Definition at line 70 of file modules.cpp.
.PP
References EMode.
.PP
Referenced by DoAddExtendedMode().
.PP
.nf
-72 {
-73 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-74 {
-75 if ((i->modechar == modechar) && (i->type == type))
-76 {
-77 return true;
-78 }
-79 }
-80 return false;
-81 }
+71 {
+72 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+73 {
+74 if ((i->modechar == modechar) && (i->type == type))
+75 {
+76 return true;
+77 }
+78 }
+79 return false;
+80 }
.fi
.PP
.SS "int ModeDefinedOff (char modechar, int type)"
.PP
-Definition at line 121 of file modules.cpp.
+Definition at line 120 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-122 {
-123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-124 {
-125 if ((i->modechar == modechar) && (i->type == type))
-126 {
-127 return i->params_when_off;
-128 }
-129 }
-130 return 0;
-131 }
+121 {
+122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+123 {
+124 if ((i->modechar == modechar) && (i->type == type))
+125 {
+126 return i->params_when_off;
+127 }
+128 }
+129 return 0;
+130 }
.fi
.PP
.SS "int ModeDefinedOn (char modechar, int type)"
.PP
-Definition at line 108 of file modules.cpp.
+Definition at line 107 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-109 {
-110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-111 {
-112 if ((i->modechar == modechar) && (i->type == type))
-113 {
-114 return i->params_when_on;
-115 }
-116 }
-117 return 0;
-118 }
+108 {
+109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+110 {
+111 if ((i->modechar == modechar) && (i->type == type))
+112 {
+113 return i->params_when_on;
+114 }
+115 }
+116 return 0;
+117 }
.fi
.PP
.SS "bool ModeDefinedOper (char modechar, int type)"
.PP
-Definition at line 95 of file modules.cpp.
+Definition at line 94 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-96 {
-97 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-98 {
-99 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
-100 {
-101 return true;
-102 }
-103 }
-104 return false;
-105 }
+95 {
+96 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+97 {
+98 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
+99 {
+100 return true;
+101 }
+102 }
+103 return false;
+104 }
.fi
.PP
.SS "bool ModeIsListMode (char modechar, int type)"
.PP
-Definition at line 83 of file modules.cpp.
+Definition at line 82 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-84 {
-85 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-86 {
-87 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
-88 {
-89 return true;
-90 }
-91 }
-92 return false;
-93 }
+83 {
+84 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+85 {
+86 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
+87 {
+88 return true;
+89 }
+90 }
+91 return false;
+92 }
.fi
.PP
.SS "void ModeMakeList (char modechar)"
.PP
-Definition at line 144 of file modules.cpp.
+Definition at line 143 of file modules.cpp.
.PP
References EMode, and MT_CHANNEL.
.PP
Referenced by Server::AddExtendedListMode().
.PP
.nf
-145 {
-146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-147 {
-148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
-149 {
-150 i->list = true;
-151 return;
-152 }
-153 }
-154 return;
-155 }
+144 {
+145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+146 {
+147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
+148 {
+149 i->list = true;
+150 return;
+151 }
+152 }
+153 return;
+154 }
.fi
.PP
.SS "std::vector<\fBModule\fP*> modules (255)"
.PP
.SS "\fBuser_hash\fP \fBclientlist\fP"
.PP
+Referenced by AddClient(), kill_link(), kill_link_silent(), and ReHashNick().
.SS "\fBcommand_table\fP \fBcmdlist\fP"
.PP
.SS "\fBServerConfig\fP* \fBConfig\fP"
.PP
.SS "\fBExtModeList\fP \fBEMode\fP"
.PP
-Definition at line 68 of file modules.cpp.
+Definition at line 67 of file modules.cpp.
.PP
Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedOn(), ModeDefinedOper(), ModeIsListMode(), and ModeMakeList().
.SS "std::vector<\fBircd_module\fP*> factory"
.PP
.SS "int \fBMODCOUNT\fP = -1"
.PP
-Definition at line 935 of file modules.cpp.
+Definition at line 934 of file modules.cpp.
.SS "std::vector<\fBInspSocket\fP*> \fBmodule_sockets\fP"
.PP
Referenced by Server::AddSocket(), and Server::DelSocket().
.SS "std::vector<\fBModule\fP*> modules"
.PP
-.SS "\fBSocketEngine\fP* \fBSE\fP"
-.PP
.SS "\fBInspIRCd\fP* \fBServerInstance\fP"
.PP
.SS "time_t \fBTIME\fP"
-.TH "modules.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "modules.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.RI "#define \fBFD_MAGIC_NUMBER\fP -42"
.br
.ti -1c
+.RI "#define \fBIS_LOCAL\fP(x) (x->fd > -1)"
+.br
+.ti -1c
+.RI "#define \fBIS_REMOTE\fP(x) (x->fd < 0)"
+.br
+.ti -1c
+.RI "#define \fBIS_MODULE_CREATED\fP(x) (x->fd == FD_MAGIC_NUMBER)"
+.br
+.ti -1c
+.RI "#define \fBWM_AND\fP 1"
+.br
+.ti -1c
+.RI "#define \fBWM_OR\fP 2"
+.br
+.ti -1c
+.RI "#define \fBTYPE_USER\fP 1"
+.br
+.ti -1c
+.RI "#define \fBTYPE_CHANNEL\fP 2"
+.br
+.ti -1c
+.RI "#define \fBTYPE_SERVER\fP 3"
+.br
+.ti -1c
.RI "#define \fBCONF_NOT_A_NUMBER\fP 0x000010"
.br
.ti -1c
.in +1c
.ti -1c
-.RI "void \fBcreatecommand\fP (char *cmd, \fBhandlerfunc\fP f, char flags, int minparams, char *source)"
-.br
-.ti -1c
-.RI "void \fBserver_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
.RI "bool \fBModeDefined\fP (char c, int i)"
.br
.ti -1c
Referenced by kick_channel().
.SS "#define CONF_FILE_NOT_FOUND 0x000200"
.PP
-Definition at line 1523 of file modules.h.
+Definition at line 1541 of file modules.h.
.PP
Referenced by ConfigReader::ConfigReader().
.SS "#define CONF_NOT_A_NUMBER 0x000010"
.PP
-Definition at line 1520 of file modules.h.
+Definition at line 1538 of file modules.h.
.PP
Referenced by ConfigReader::ReadInteger().
.SS "#define CONF_NOT_UNSIGNED 0x000080"
.PP
-Definition at line 1521 of file modules.h.
+Definition at line 1539 of file modules.h.
.PP
Referenced by ConfigReader::ReadInteger().
.SS "#define CONF_VALUE_NOT_FOUND 0x000100"
.PP
-Definition at line 1522 of file modules.h.
+Definition at line 1540 of file modules.h.
.PP
Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue().
.SS "#define DEBUG 10"
Definition at line 25 of file modules.h.
.SS "#define FD_MAGIC_NUMBER -42"
.PP
-Definition at line 101 of file modules.h.
+Definition at line 102 of file modules.h.
.PP
Referenced by Server::PseudoToUser(), and Server::UserToPseudo().
.SS "#define FOREACH_MOD for (int _i = 0; _i <= \fBMODCOUNT\fP; _i++) modules[_i]->"
.PP
-Definition at line 81 of file modules.h.
+Definition at line 82 of file modules.h.
.PP
-Referenced by del_channel(), ForceChan(), kick_channel(), and Event::Send().
+Referenced by del_channel(), ForceChan(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), and Event::Send().
.SS "#define FOREACH_RESULT(x)"
.PP
\fBValue:\fP
}
.fi
.PP
-Definition at line 89 of file modules.h.
+Definition at line 90 of file modules.h.
+.PP
+Referenced by add_channel(), force_nickchange(), and kick_channel().
+.SS "#define IS_LOCAL(x) (x->fd > -1)"
+.PP
+Definition at line 106 of file modules.h.
+.SS "#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)"
+.PP
+Definition at line 108 of file modules.h.
+.SS "#define IS_REMOTE(x) (x->fd < 0)"
.PP
-Referenced by add_channel(), and kick_channel().
+Definition at line 107 of file modules.h.
.SS "#define MT_CHANNEL 1"
.PP
Used with OnExtendedMode() method of modules.
.SS "#define SPARSE 40"
.PP
Definition at line 26 of file modules.h.
+.SS "#define TYPE_CHANNEL 2"
+.PP
+Definition at line 118 of file modules.h.
+.SS "#define TYPE_SERVER 3"
+.PP
+Definition at line 119 of file modules.h.
+.SS "#define TYPE_USER 1"
+.PP
+Definition at line 117 of file modules.h.
.SS "#define VERBOSE 20"
.PP
Definition at line 24 of file modules.h.
Definition at line 53 of file modules.h.
.PP
Referenced by Module::GetVersion().
+.SS "#define WM_AND 1"
+.PP
+Definition at line 112 of file modules.h.
+.SS "#define WM_OR 2"
+.PP
+Definition at line 113 of file modules.h.
.SH "Typedef Documentation"
.PP
.SS "typedef std::deque<\fBuserrec\fP*> \fBchanuserlist\fP"
.PP
Holds a list of users in a channel.
.PP
-Definition at line 74 of file modules.h.
+Definition at line 75 of file modules.h.
.SS "typedef std::deque<\fBstd::string\fP> \fBfile_cache\fP"
.PP
Low level definition of a \fBFileReader\fP classes file cache area.
.PP
-Definition at line 65 of file modules.h.
+Definition at line 66 of file modules.h.
.SS "typedef DLLFactory<\fBModuleFactory\fP> \fBircd_module\fP"
.PP
-Definition at line 1689 of file modules.h.
+Definition at line 1707 of file modules.h.
.SS "typedef \fBfile_cache\fP \fBstring_list\fP"
.PP
-Definition at line 70 of file modules.h.
+Definition at line 71 of file modules.h.
.SH "Function Documentation"
.PP
-.SS "void createcommand (char * cmd, \fBhandlerfunc\fP f, char flags, int minparams, char * source)"
-.PP
-Referenced by Server::AddCommand().
.SS "bool ModeDefined (char c, int i)"
.PP
-Definition at line 71 of file modules.cpp.
+Definition at line 70 of file modules.cpp.
.PP
References EMode.
.PP
Referenced by DoAddExtendedMode().
.PP
.nf
-72 {
-73 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-74 {
-75 if ((i->modechar == modechar) && (i->type == type))
-76 {
-77 return true;
-78 }
-79 }
-80 return false;
-81 }
+71 {
+72 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+73 {
+74 if ((i->modechar == modechar) && (i->type == type))
+75 {
+76 return true;
+77 }
+78 }
+79 return false;
+80 }
.fi
.PP
.SS "int ModeDefinedOff (char c, int i)"
.PP
-Definition at line 121 of file modules.cpp.
+Definition at line 120 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-122 {
-123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-124 {
-125 if ((i->modechar == modechar) && (i->type == type))
-126 {
-127 return i->params_when_off;
-128 }
-129 }
-130 return 0;
-131 }
+121 {
+122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+123 {
+124 if ((i->modechar == modechar) && (i->type == type))
+125 {
+126 return i->params_when_off;
+127 }
+128 }
+129 return 0;
+130 }
.fi
.PP
.SS "int ModeDefinedOn (char c, int i)"
.PP
-Definition at line 108 of file modules.cpp.
+Definition at line 107 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-109 {
-110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-111 {
-112 if ((i->modechar == modechar) && (i->type == type))
-113 {
-114 return i->params_when_on;
-115 }
-116 }
-117 return 0;
-118 }
+108 {
+109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+110 {
+111 if ((i->modechar == modechar) && (i->type == type))
+112 {
+113 return i->params_when_on;
+114 }
+115 }
+116 return 0;
+117 }
.fi
.PP
.SS "bool ModeDefinedOper (char c, int i)"
.PP
-Definition at line 95 of file modules.cpp.
+Definition at line 94 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-96 {
-97 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-98 {
-99 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
-100 {
-101 return true;
-102 }
-103 }
-104 return false;
-105 }
+95 {
+96 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+97 {
+98 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
+99 {
+100 return true;
+101 }
+102 }
+103 return false;
+104 }
.fi
.PP
.SS "bool ModeIsListMode (char modechar, int type)"
.PP
-Definition at line 83 of file modules.cpp.
+Definition at line 82 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-84 {
-85 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-86 {
-87 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
-88 {
-89 return true;
-90 }
-91 }
-92 return false;
-93 }
+83 {
+84 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+85 {
+86 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
+87 {
+88 return true;
+89 }
+90 }
+91 return false;
+92 }
.fi
.PP
.SS "void ModeMakeList (char modechar)"
.PP
-Definition at line 144 of file modules.cpp.
+Definition at line 143 of file modules.cpp.
.PP
References EMode, and MT_CHANNEL.
.PP
Referenced by Server::AddExtendedListMode().
.PP
.nf
-145 {
-146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-147 {
-148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
-149 {
-150 i->list = true;
-151 return;
-152 }
-153 }
-154 return;
-155 }
+144 {
+145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+146 {
+147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
+148 {
+149 i->list = true;
+150 return;
+151 }
+152 }
+153 return;
+154 }
.fi
.PP
-.SS "void server_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "nspace" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "nspace" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "nspace::hash< in_addr >" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "nspace::hash< in_addr >" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "nspace::hash< string >" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "nspace::hash< string >" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "serverstats" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "serverstats" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.ti -1c
.RI "int \fBstatsRecv\fP"
.br
+.ti -1c
+.RI "int \fBBoundPortCount\fP"
+.br
.in -1c
.SH "Detailed Description"
.PP
-Definition at line 72 of file inspircd.h.
+Definition at line 74 of file inspircd.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "serverstats::serverstats ()\fC [inline]\fP"
.PP
-Definition at line 86 of file inspircd.h.
+Definition at line 89 of file inspircd.h.
.PP
-References statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown.
+References BoundPortCount, statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown.
.PP
.nf
-87 {
-88 statsAccept = statsRefused = statsUnknown = 0;
-89 statsCollisions = statsDns = statsDnsGood = 0;
-90 statsDnsBad = statsConnects = statsSent = statsRecv = 0;
-91 }
+90 {
+91 statsAccept = statsRefused = statsUnknown = 0;
+92 statsCollisions = statsDns = statsDnsGood = 0;
+93 statsDnsBad = statsConnects = statsSent = statsRecv = 0;
+94 BoundPortCount = 0;
+95 }
.fi
.PP
.SH "Member Data Documentation"
.PP
+.SS "int \fBserverstats::BoundPortCount\fP"
+.PP
+Definition at line 87 of file inspircd.h.
+.PP
+Referenced by serverstats().
.SS "int \fBserverstats::statsAccept\fP"
.PP
-Definition at line 75 of file inspircd.h.
+Definition at line 77 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsCollisions\fP"
.PP
-Definition at line 78 of file inspircd.h.
+Definition at line 80 of file inspircd.h.
.PP
-Referenced by serverstats().
+Referenced by force_nickchange(), and serverstats().
.SS "int \fBserverstats::statsConnects\fP"
.PP
-Definition at line 82 of file inspircd.h.
+Definition at line 84 of file inspircd.h.
.PP
-Referenced by serverstats().
+Referenced by FullConnectUser(), and serverstats().
.SS "int \fBserverstats::statsDns\fP"
.PP
-Definition at line 79 of file inspircd.h.
+Definition at line 81 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsDnsBad\fP"
.PP
-Definition at line 81 of file inspircd.h.
+Definition at line 83 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsDnsGood\fP"
.PP
-Definition at line 80 of file inspircd.h.
+Definition at line 82 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsRecv\fP"
.PP
-Definition at line 84 of file inspircd.h.
+Definition at line 86 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsRefused\fP"
.PP
-Definition at line 76 of file inspircd.h.
+Definition at line 78 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsSent\fP"
.PP
-Definition at line 83 of file inspircd.h.
+Definition at line 85 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsUnknown\fP"
.PP
-Definition at line 77 of file inspircd.h.
+Definition at line 79 of file inspircd.h.
.PP
Referenced by serverstats().
-.TH "socket.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socket.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include 'inspstring.h'\fP
.br
\fC#include 'helperfuncs.h'\fP
.in +1c
.ti -1c
-.RI "\fBSocketEngine\fP * \fBSE\fP"
-.br
-.ti -1c
-.RI "int \fBboundPortCount\fP"
-.br
-.ti -1c
-.RI "int \fBopenSockfd\fP [MAXSOCKS]"
+.RI "\fBInspIRCd\fP * \fBServerInstance\fP"
.br
.ti -1c
.RI "time_t \fBTIME\fP"
.in -1c
.SH "Variable Documentation"
.PP
-.SS "int \fBboundPortCount\fP"
-.PP
-.SS "int \fBopenSockfd\fP[MAXSOCKS]"
-.PP
-.SS "\fBSocketEngine\fP* \fBSE\fP"
+.SS "\fBInspIRCd\fP* \fBServerInstance\fP"
.PP
.SS "\fBInspSocket\fP* \fBsocket_ref\fP[65535]"
.PP
-Definition at line 46 of file socket.cpp.
+Definition at line 43 of file socket.cpp.
.SS "time_t \fBTIME\fP"
.PP
.SH "Author"
-.TH "socket.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socket.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "socketengine.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socketengine.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "socketengine.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socketengine.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.SS "const char \fBX_ESTAB_CLIENT\fP = 2"
.PP
Definition at line 43 of file socketengine.h.
+.PP
+Referenced by AddClient().
.SS "const char \fBX_ESTAB_DNS\fP = 4"
.PP
Definition at line 45 of file socketengine.h.
-.TH "std" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "std" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "std::char_traits" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "std::char_traits" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-.TH "typedefs.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "typedefs.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.RI "typedef nspace::hash_map< \fBstd::string\fP, \fBWhoWasUser\fP *, nspace::hash< \fBstring\fP >, \fBirc::StrHashComp\fP > \fBwhowas_hash\fP"
.br
.ti -1c
-.RI "typedef std::deque< \fBcommand_t\fP > \fBcommand_table\fP"
-.br
-.ti -1c
.RI "typedef std::vector< \fBstd::string\fP > \fBservernamelist\fP"
.br
.ti -1c
.SS "typedef nspace::hash_map<\fBstd::string\fP, \fBchanrec\fP*, nspace::hash<\fBstring\fP>, \fBirc::StrHashComp\fP> \fBchan_hash\fP"
.PP
Definition at line 21 of file typedefs.h.
-.SS "typedef std::deque<\fBcommand_t\fP> \fBcommand_table\fP"
-.PP
-Definition at line 24 of file typedefs.h.
.SS "typedef std::vector<\fBExtMode\fP> \fBExtModeList\fP"
.PP
-Definition at line 26 of file typedefs.h.
+Definition at line 25 of file typedefs.h.
.SS "typedef ExtModeList::iterator \fBExtModeListIter\fP"
.PP
-Definition at line 27 of file typedefs.h.
+Definition at line 26 of file typedefs.h.
.SS "typedef std::deque<\fBstd::string\fP> \fBfile_cache\fP"
.PP
-Definition at line 28 of file typedefs.h.
+Definition at line 27 of file typedefs.h.
.SS "typedef std::vector<\fBstd::string\fP> \fBservernamelist\fP"
.PP
-Definition at line 25 of file typedefs.h.
+Definition at line 24 of file typedefs.h.
.SS "typedef nspace::hash_map<\fBstd::string\fP, \fBuserrec\fP*, nspace::hash<\fBstring\fP>, \fBirc::StrHashComp\fP> \fBuser_hash\fP"
.PP
Definition at line 20 of file typedefs.h.
-.TH "ucrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ucrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
Definition at line 254 of file channels.h.
.PP
-Referenced by ForceChan().
+Referenced by AddClient(), and ForceChan().
.SS "char \fBucrec::uc_modes\fP"
.PP
Contains a bitmask of the UCMODE_OP .
.PP
Definition at line 249 of file channels.h.
.PP
-Referenced by ForceChan().
+Referenced by AddClient(), and ForceChan().
.SH "Author"
.PP
-.TH "userprocess.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "userprocess.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
\fC#include 'users.h'\fP
.br
+\fC#include 'inspircd.h'\fP
+.br
.SS "Functions"
.RI "void \fBCheckDie\fP ()"
.br
.ti -1c
-.RI "void \fBLoadAllModules\fP ()"
+.RI "void \fBLoadAllModules\fP (\fBInspIRCd\fP *\fBServerInstance\fP)"
.br
.ti -1c
.RI "void \fBCheckRoot\fP ()"
.PP
.SS "bool DoBackgroundUserStuff (time_t TIME)"
.PP
-.SS "void LoadAllModules ()"
+.SS "void LoadAllModules (\fBInspIRCd\fP * ServerInstance)"
.PP
.SS "void OpenLog (char ** argv, int argc)"
.PP
-.TH "userrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "userrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
.RI "\fIReturns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. \fP"
.ti -1c
-.RI "virtual bool \fBIsInvited\fP (char *channel)"
+.RI "virtual bool \fBIsInvited\fP (\fBirc::string\fP &channel)"
.br
.RI "\fIReturns true if a user is invited to a channel. \fP"
.ti -1c
-.RI "virtual void \fBInviteTo\fP (char *channel)"
+.RI "virtual void \fBInviteTo\fP (\fBirc::string\fP &channel)"
.br
.RI "\fIAdds a channel to a users invite list (invites them to a channel). \fP"
.ti -1c
-.RI "virtual void \fBRemoveInvite\fP (char *channel)"
+.RI "virtual void \fBRemoveInvite\fP (\fBirc::string\fP &channel)"
.br
.RI "\fIRemoves a channel from a users invite list. \fP"
.ti -1c
-.RI "bool \fBHasPermission\fP (char *command)"
+.RI "bool \fBHasPermission\fP (\fBstd::string\fP &command)"
.br
.RI "\fIReturns true or false for if a user can execute a privilaged oper command. \fP"
.ti -1c
Everything about a connection is stored here primarily, from the user's socket ID (file descriptor) through to the user's nickname and hostname. Use the Find method of the server class to locate a specific user by nickname.
.PP
-Definition at line 111 of file users.h.
+Definition at line 115 of file users.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "userrec::userrec ()"
.PP
-Definition at line 36 of file users.cpp.
+Definition at line 63 of file users.cpp.
.PP
References awaymsg, connection::bytes_in, connection::bytes_out, chans, connection::cmds_in, connection::cmds_out, dhost, dns_done, connection::fd, FindServerNamePtr(), flood, fullname, connection::haspassed, connection::host, ident, connection::idle_lastmsg, invites, connection::ip, connection::lastping, lines_in, modes, nick, connection::nping, oper, connection::port, recvq, connection::registered, reset_due, sendq, server, ServerConfig::ServerName, connection::signon, TIME, and timeout.
.PP
.nf
-37 {
-38 // the PROPER way to do it, AVOID bzero at *ALL* costs
-39 strcpy(nick,'');
-40 strcpy(ip,'127.0.0.1');
-41 timeout = 0;
-42 strcpy(ident,'');
-43 strcpy(host,'');
-44 strcpy(dhost,'');
-45 strcpy(fullname,'');
-46 strcpy(modes,'');
-47 server = (char*)FindServerNamePtr(Config->ServerName);
-48 strcpy(awaymsg,'');
-49 strcpy(oper,'');
-50 reset_due = TIME;
-51 lines_in = 0;
-52 fd = lastping = signon = idle_lastmsg = nping = registered = 0;
-53 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
-54 haspassed = false;
-55 dns_done = false;
-56 recvq = '';
-57 sendq = '';
-58 chans.clear();
-59 invites.clear();
-60 }
+64 {
+65 // the PROPER way to do it, AVOID bzero at *ALL* costs
+66 strcpy(nick,'');
+67 strcpy(ip,'127.0.0.1');
+68 timeout = 0;
+69 strcpy(ident,'');
+70 strcpy(host,'');
+71 strcpy(dhost,'');
+72 strcpy(fullname,'');
+73 strcpy(modes,'');
+74 server = (char*)FindServerNamePtr(Config->ServerName);
+75 strcpy(awaymsg,'');
+76 strcpy(oper,'');
+77 reset_due = TIME;
+78 lines_in = 0;
+79 fd = lastping = signon = idle_lastmsg = nping = registered = 0;
+80 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
+81 haspassed = false;
+82 dns_done = false;
+83 recvq = '';
+84 sendq = '';
+85 chans.clear();
+86 invites.clear();
+87 }
.fi
.PP
.SS "userrec::~userrec ()\fC [virtual]\fP"
.PP
-Definition at line 62 of file users.cpp.
+Definition at line 89 of file users.cpp.
.PP
.nf
-63 {
-64 }
+90 {
+91 }
.fi
.PP
.SH "Member Function Documentation"
.PP
The buffer can grow to any size within limits of the available memory, managed by the size of a \fBstd::string\fP, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted.
.PP
-Definition at line 198 of file users.cpp.
+Definition at line 219 of file users.cpp.
.PP
References recvq, recvqmax, SetWriteError(), and WriteOpers().
.PP
.nf
-199 {
-200 std::string b = '';
-201 for (unsigned int i = 0; i < a.length(); i++)
-202 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
-203 b = b + a[i];
-204 std::stringstream stream(recvq);
-205 stream << b;
-206 recvq = stream.str();
-207 unsigned int i = 0;
-208 // count the size of the first line in the buffer.
-209 while (i < recvq.length())
-210 {
-211 if (recvq[i++] == '\n')
-212 break;
-213 }
-214 if (recvq.length() > (unsigned)this->recvqmax)
-215 {
-216 this->SetWriteError('RecvQ exceeded');
-217 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax);
-218 }
-219 // return false if we've had more than 600 characters WITHOUT
-220 // a carriage return (this is BAD, drop the socket)
-221 return (i < 600);
-222 }
+220 {
+221 std::string b = '';
+222 for (unsigned int i = 0; i < a.length(); i++)
+223 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
+224 b = b + a[i];
+225 std::stringstream stream(recvq);
+226 stream << b;
+227 recvq = stream.str();
+228 unsigned int i = 0;
+229 // count the size of the first line in the buffer.
+230 while (i < recvq.length())
+231 {
+232 if (recvq[i++] == '\n')
+233 break;
+234 }
+235 if (recvq.length() > (unsigned)this->recvqmax)
+236 {
+237 this->SetWriteError('RecvQ exceeded');
+238 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax);
+239 }
+240 // return false if we've had more than 600 characters WITHOUT
+241 // a carriage return (this is BAD, drop the socket)
+242 return (i < 600);
+243 }
.fi
.PP
.SS "void userrec::AddWriteBuf (\fBstd::string\fP data)"
.PP
You may add any amount of text up to this users sendq value, if you exceed the sendq value, \fBSetWriteError()\fP will be called to set the users error string to 'SendQ exceeded', and further buffer adds will be dropped.
.PP
-Definition at line 254 of file users.cpp.
+Definition at line 275 of file users.cpp.
.PP
References sendq, sendqmax, SetWriteError(), and WriteOpers().
.PP
.nf
-255 {
-256 if (this->GetWriteError() != '')
-257 return;
-258 if (sendq.length() + data.length() > (unsigned)this->sendqmax)
-259 {
-260 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax);
-261 this->SetWriteError('SendQ exceeded');
-262 return;
-263 }
-264 std::stringstream stream;
-265 stream << sendq << data;
-266 sendq = stream.str();
-267 }
+276 {
+277 if (this->GetWriteError() != '')
+278 return;
+279 if (sendq.length() + data.length() > (unsigned)this->sendqmax)
+280 {
+281 /* Fix by brain - Set the error text BEFORE calling writeopers, because
+282 * if we dont it'll recursively call here over and over again trying
+283 * to repeatedly add the text to the sendq!
+284 */
+285 this->SetWriteError('SendQ exceeded');
+286 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax);
+287 return;
+288 }
+289 std::stringstream stream;
+290 stream << sendq << data;
+291 sendq = stream.str();
+292 }
.fi
.PP
.SS "bool userrec::BufferIsReady ()"
.PP
one complete line may be read)
.PP
-Definition at line 224 of file users.cpp.
+Definition at line 245 of file users.cpp.
.PP
References recvq.
.PP
.nf
-225 {
-226 for (unsigned int i = 0; i < recvq.length(); i++)
-227 if (recvq[i] == '\n')
-228 return true;
-229 return false;
-230 }
+246 {
+247 for (unsigned int i = 0; i < recvq.length(); i++)
+248 if (recvq[i] == '\n')
+249 return true;
+250 return false;
+251 }
.fi
.PP
.SS "void userrec::ClearBuffer ()"
.PP
This function clears the entire buffer by setting it to an empty string.
.PP
-Definition at line 232 of file users.cpp.
+Definition at line 253 of file users.cpp.
.PP
References recvq.
.PP
Referenced by Server::PseudoToUser(), and Server::UserToPseudo().
.PP
.nf
-233 {
-234 recvq = '';
-235 }
+254 {
+255 recvq = '';
+256 }
.fi
.PP
.SS "void userrec::CloseSocket ()"
.PP
Shuts down and closes the user's socket.
.PP
-Definition at line 66 of file users.cpp.
+Definition at line 93 of file users.cpp.
+.PP
+Referenced by kill_link(), and kill_link_silent().
.PP
.nf
-67 {
-68 shutdown(this->fd,2);
-69 close(this->fd);
-70 }
+94 {
+95 shutdown(this->fd,2);
+96 close(this->fd);
+97 }
.fi
.PP
.SS "void userrec::FlushWriteBuf ()"
.PP
This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method.
.PP
-Definition at line 270 of file users.cpp.
+Definition at line 295 of file users.cpp.
.PP
References connection::bytes_out, connection::cmds_out, sendq, and SetWriteError().
.PP
+Referenced by kill_link(), and kill_link_silent().
+.PP
.nf
-271 {
-272 if (sendq.length())
-273 {
-274 char* tb = (char*)this->sendq.c_str();
-275 int n_sent = write(this->fd,tb,this->sendq.length());
-276 if (n_sent == -1)
-277 {
-278 this->SetWriteError(strerror(errno));
-279 }
-280 else
-281 {
-282 // advance the queue
-283 tb += n_sent;
-284 this->sendq = tb;
-285 // update the user's stats counters
-286 this->bytes_out += n_sent;
-287 this->cmds_out++;
-288 }
-289 }
-290 }
+296 {
+297 if (sendq.length())
+298 {
+299 char* tb = (char*)this->sendq.c_str();
+300 int n_sent = write(this->fd,tb,this->sendq.length());
+301 if (n_sent == -1)
+302 {
+303 this->SetWriteError(strerror(errno));
+304 }
+305 else
+306 {
+307 // advance the queue
+308 tb += n_sent;
+309 this->sendq = tb;
+310 // update the user's stats counters
+311 this->bytes_out += n_sent;
+312 this->cmds_out++;
+313 }
+314 }
+315 }
.fi
.PP
.SS "\fBstd::string\fP userrec::GetBuffer ()"
.PP
This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use \fBBufferIsReady()\fP to check if it is ok to read the buffer before calling \fBGetBuffer()\fP.
.PP
-Definition at line 237 of file users.cpp.
+Definition at line 258 of file users.cpp.
.PP
References recvq.
.PP
.nf
-238 {
-239 if (recvq == '')
-240 return '';
-241 char* line = (char*)recvq.c_str();
-242 std::string ret = '';
-243 while ((*line != '\n') && (strlen(line)))
-244 {
-245 ret = ret + *line;
-246 line++;
-247 }
-248 if ((*line == '\n') || (*line == '\r'))
-249 line++;
-250 recvq = line;
-251 return ret;
-252 }
+259 {
+260 if (recvq == '')
+261 return '';
+262 char* line = (char*)recvq.c_str();
+263 std::string ret = '';
+264 while ((*line != '\n') && (strlen(line)))
+265 {
+266 ret = ret + *line;
+267 line++;
+268 }
+269 if ((*line == '\n') || (*line == '\r'))
+270 line++;
+271 recvq = line;
+272 return ret;
+273 }
.fi
.PP
.SS "char * userrec::GetFullHost ()\fC [virtual]\fP"
.PP
Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form.
.PP
-Definition at line 72 of file users.cpp.
+Definition at line 99 of file users.cpp.
.PP
References dhost, ident, and nick.
.PP
Referenced by add_channel().
.PP
.nf
-73 {
-74 static char result[MAXBUF];
-75 snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost);
-76 return result;
-77 }
+100 {
+101 static char result[MAXBUF];
+102 snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost);
+103 return result;
+104 }
.fi
.PP
.SS "char * userrec::GetFullRealHost ()\fC [virtual]\fP"
.PP
If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
.PP
-Definition at line 89 of file users.cpp.
+Definition at line 116 of file users.cpp.
.PP
References connection::host, ident, and nick.
.PP
.nf
-90 {
-91 static char fresult[MAXBUF];
-92 snprintf(fresult,MAXBUF,'%s!%s@%s',nick,ident,host);
-93 return fresult;
-94 }
+117 {
+118 static char fresult[MAXBUF];
+119 snprintf(fresult,MAXBUF,'%s!%s@%s',nick,ident,host);
+120 return fresult;
+121 }
.fi
.PP
.SS "\fBInvitedList\fP * userrec::GetInviteList ()"
.PP
Returns the list of channels this user has been invited to but has not yet joined.
.PP
-Definition at line 110 of file users.cpp.
+Definition at line 136 of file users.cpp.
.PP
References invites.
.PP
.nf
-111 {
-112 return &invites;
-113 }
+137 {
+138 return &invites;
+139 }
.fi
.PP
.SS "\fBstd::string\fP userrec::GetWriteError ()"
.PP
Returns the write error which last occured on this connection or an empty string if none occured.
.PP
-Definition at line 300 of file users.cpp.
+Definition at line 325 of file users.cpp.
.PP
References WriteError.
.PP
.nf
-301 {
-302 return this->WriteError;
-303 }
+326 {
+327 return this->WriteError;
+328 }
.fi
.PP
-.SS "bool userrec::HasPermission (char * command)"
+.SS "bool userrec::HasPermission (\fBstd::string\fP & command)"
.PP
Returns true or false for if a user can execute a privilaged oper command.
.PP
This is done by looking up their oper type from \fBuserrec::oper\fP, then referencing this to their oper classes and checking the commands they can execute.
.PP
-Definition at line 144 of file users.cpp.
+Definition at line 165 of file users.cpp.
.PP
References ServerConfig::config_f, ServerConfig::ConfValue(), and is_uline().
.PP
.nf
-145 {
-146 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-147 char* mycmd;
-148 char* savept;
-149 char* savept2;
-150
-151 // users on u-lined servers can completely bypass
-152 // all permissions based checks.
-153 //
-154 // of course, if this is sent to a remote server and this
-155 // server is not ulined there, then that other server
-156 // silently drops the command.
-157 if (is_uline(this->server))
-158 return true;
-159
-160 // are they even an oper at all?
-161 if (strchr(this->modes,'o'))
-162 {
-163 for (int j =0; j < Config->ConfValueEnum('type',&Config->config_f); j++)
-164 {
-165 Config->ConfValue('type','name',j,TypeName,&Config->config_f);
-166 if (!strcmp(TypeName,this->oper))
-167 {
-168 Config->ConfValue('type','classes',j,Classes,&Config->config_f);
-169 char* myclass = strtok_r(Classes,' ',&savept);
-170 while (myclass)
-171 {
-172 for (int k =0; k < Config->ConfValueEnum('class',&Config->config_f); k++)
-173 {
-174 Config->ConfValue('class','name',k,ClassName,&Config->config_f);
-175 if (!strcmp(ClassName,myclass))
-176 {
-177 Config->ConfValue('class','commands',k,CommandList,&Config->config_f);
-178 mycmd = strtok_r(CommandList,' ',&savept2);
-179 while (mycmd)
-180 {
-181 if ((!strcasecmp(mycmd,command)) || (*mycmd == '*'))
-182 {
-183 return true;
-184 }
-185 mycmd = strtok_r(NULL,' ',&savept2);
-186 }
-187 }
-188 }
-189 myclass = strtok_r(NULL,' ',&savept);
-190 }
-191 }
-192 }
-193 }
-194 return false;
-195 }
+166 {
+167 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+168 char* mycmd;
+169 char* savept;
+170 char* savept2;
+171
+172 // users on u-lined servers can completely bypass
+173 // all permissions based checks.
+174 //
+175 // of course, if this is sent to a remote server and this
+176 // server is not ulined there, then that other server
+177 // silently drops the command.
+178 if (is_uline(this->server))
+179 return true;
+180
+181 // are they even an oper at all?
+182 if (strchr(this->modes,'o'))
+183 {
+184 for (int j =0; j < Config->ConfValueEnum('type',&Config->config_f); j++)
+185 {
+186 Config->ConfValue('type','name',j,TypeName,&Config->config_f);
+187 if (!strcmp(TypeName,this->oper))
+188 {
+189 Config->ConfValue('type','classes',j,Classes,&Config->config_f);
+190 char* myclass = strtok_r(Classes,' ',&savept);
+191 while (myclass)
+192 {
+193 for (int k =0; k < Config->ConfValueEnum('class',&Config->config_f); k++)
+194 {
+195 Config->ConfValue('class','name',k,ClassName,&Config->config_f);
+196 if (!strcmp(ClassName,myclass))
+197 {
+198 Config->ConfValue('class','commands',k,CommandList,&Config->config_f);
+199 mycmd = strtok_r(CommandList,' ',&savept2);
+200 while (mycmd)
+201 {
+202 if ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == '*'))
+203 {
+204 return true;
+205 }
+206 mycmd = strtok_r(NULL,' ',&savept2);
+207 }
+208 }
+209 }
+210 myclass = strtok_r(NULL,' ',&savept);
+211 }
+212 }
+213 }
+214 }
+215 return false;
+216 }
.fi
.PP
-.SS "void userrec::InviteTo (char * channel)\fC [virtual]\fP"
+.SS "void userrec::InviteTo (\fBirc::string\fP & channel)\fC [virtual]\fP"
.PP
Adds a channel to a users invite list (invites them to a channel).
.PP
-Definition at line 115 of file users.cpp.
+Definition at line 141 of file users.cpp.
.PP
References Invited::channel, and invites.
.PP
.nf
-116 {
-117 Invited i;
-118 strlcpy(i.channel,channel,CHANMAX);
-119 invites.push_back(i);
-120 }
+142 {
+143 Invited i;
+144 i.channel = channel;
+145 invites.push_back(i);
+146 }
.fi
.PP
-.SS "bool userrec::IsInvited (char * channel)\fC [virtual]\fP"
+.SS "bool userrec::IsInvited (\fBirc::string\fP & channel)\fC [virtual]\fP"
.PP
Returns true if a user is invited to a channel.
.PP
-Definition at line 96 of file users.cpp.
+Definition at line 123 of file users.cpp.
.PP
References invites.
.PP
Referenced by add_channel().
.PP
.nf
-97 {
-98 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
-99 {
-100 if (i->channel) {
-101 if (!strcasecmp(i->channel,channel))
-102 {
-103 return true;
-104 }
-105 }
-106 }
-107 return false;
-108 }
+124 {
+125 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
+126 {
+127 irc::string compare = i->channel;
+128 if (compare == channel)
+129 {
+130 return true;
+131 }
+132 }
+133 return false;
+134 }
.fi
.PP
.SS "int userrec::ReadData (void * buffer, size_t size)"
.PP
Calls read() to read some data for this user using their fd.
.PP
-Definition at line 79 of file users.cpp.
+Definition at line 106 of file users.cpp.
.PP
.nf
-80 {
-81 if (this->fd > -1)
-82 {
-83 return read(this->fd, buffer, size);
-84 }
-85 else return 0;
-86 }
+107 {
+108 if (this->fd > -1)
+109 {
+110 return read(this->fd, buffer, size);
+111 }
+112 else return 0;
+113 }
.fi
.PP
-.SS "void userrec::RemoveInvite (char * channel)\fC [virtual]\fP"
+.SS "void userrec::RemoveInvite (\fBirc::string\fP & channel)\fC [virtual]\fP"
.PP
Removes a channel from a users invite list.
.PP
This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
.PP
-Definition at line 122 of file users.cpp.
+Definition at line 148 of file users.cpp.
.PP
References DEBUG, invites, and log().
.PP
Referenced by add_channel().
.PP
.nf
-123 {
-124 log(DEBUG,'Removing invites');
-125 if (channel)
-126 {
-127 if (invites.size())
-128 {
-129 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
-130 {
-131 if (i->channel)
-132 {
-133 if (!strcasecmp(i->channel,channel))
-134 {
-135 invites.erase(i);
-136 return;
-137 }
-138 }
-139 }
-140 }
-141 }
-142 }
+149 {
+150 log(DEBUG,'Removing invites');
+151 if (invites.size())
+152 {
+153 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
+154 {
+155 irc::string compare = i->channel;
+156 if (compare == channel)
+157 {
+158 invites.erase(i);
+159 return;
+160 }
+161 }
+162 }
+163 }
.fi
.PP
.SS "void userrec::SetWriteError (\fBstd::string\fP error)"
.PP
This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged.
.PP
-Definition at line 292 of file users.cpp.
+Definition at line 317 of file users.cpp.
.PP
References DEBUG, log(), and WriteError.
.PP
Referenced by AddBuffer(), AddWriteBuf(), and FlushWriteBuf().
.PP
.nf
-293 {
-294 log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str());
-295 // don't try to set the error twice, its already set take the first string.
-296 if (this->WriteError == '')
-297 this->WriteError = error;
-298 }
+318 {
+319 log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str());
+320 // don't try to set the error twice, its already set take the first string.
+321 if (this->WriteError == '')
+322 this->WriteError = error;
+323 }
.fi
.PP
.SH "Member Data Documentation"
.PP
If this string is empty, the user is not marked as away.
.PP
-Definition at line 158 of file users.h.
+Definition at line 162 of file users.h.
.PP
Referenced by userrec().
.SS "std::vector<\fBucrec\fP> \fBuserrec::chans\fP"
.PP
-Definition at line 149 of file users.h.
+Definition at line 153 of file users.h.
.PP
Referenced by add_channel(), del_channel(), kick_channel(), Server::PseudoToUser(), and userrec().
.SS "char \fBuserrec::dhost\fP[160]"
.PP
This usually matches the value of \fBuserrec::host\fP.
.PP
-Definition at line 134 of file users.h.
+Definition at line 138 of file users.h.
.PP
-Referenced by GetFullHost(), and userrec().
+Referenced by AddWhoWas(), GetFullHost(), and userrec().
.SS "bool \fBuserrec::dns_done\fP"
.PP
True when \fBDNS\fP lookups are completed.
.PP
-Definition at line 181 of file users.h.
+Definition at line 185 of file users.h.
.PP
-Referenced by userrec().
+Referenced by ConnectUser(), and userrec().
.SS "int \fBuserrec::flood\fP"
.PP
Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood.
.PP
-Definition at line 164 of file users.h.
+Definition at line 168 of file users.h.
.PP
Referenced by userrec().
.SS "char \fBuserrec::fullname\fP[MAXGECOS+1]"
.PP
The users full name.
.PP
-Definition at line 138 of file users.h.
+Definition at line 142 of file users.h.
.PP
-Referenced by userrec().
+Referenced by AddWhoWas(), and userrec().
.SS "char \fBuserrec::ident\fP[IDENTMAX+2]"
.PP
The users ident reply.
.PP
Two characters are added to the user-defined limit to compensate for the tilde etc.
.PP
-Definition at line 129 of file users.h.
+Definition at line 133 of file users.h.
.PP
-Referenced by GetFullHost(), GetFullRealHost(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo().
+Referenced by AddWhoWas(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo().
.SS "\fBInvitedList\fP \fBuserrec::invites\fP\fC [private]\fP"
.PP
A list of channels the user has a pending invite to.
.PP
-Definition at line 117 of file users.h.
+Definition at line 121 of file users.h.
.PP
Referenced by GetInviteList(), InviteTo(), IsInvited(), RemoveInvite(), and userrec().
.SS "int \fBuserrec::lines_in\fP"
.PP
Flood counters.
.PP
-Definition at line 206 of file users.h.
+Definition at line 210 of file users.h.
.PP
Referenced by userrec().
.SS "char \fBuserrec::modes\fP[54]"
.PP
This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.
.PP
-Definition at line 147 of file users.h.
+Definition at line 151 of file users.h.
.PP
Referenced by add_channel(), and userrec().
.SS "char \fBuserrec::nick\fP[NICKMAX]"
.PP
An invalid nickname indicates an unregistered connection prior to the NICK command.
.PP
-Definition at line 124 of file users.h.
+Definition at line 128 of file users.h.
.PP
-Referenced by add_channel(), del_channel(), ConfigReader::DumpErrors(), GetFullHost(), GetFullRealHost(), kick_channel(), Server::PseudoToUser(), and userrec().
+Referenced by add_channel(), AddWhoWas(), del_channel(), ConfigReader::DumpErrors(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), and userrec().
.SS "char \fBuserrec::oper\fP[NICKMAX]"
.PP
The oper type they logged in as, if they are an oper.
.PP
This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag.
.PP
-Definition at line 177 of file users.h.
+Definition at line 181 of file users.h.
.PP
Referenced by userrec().
.SS "char \fBuserrec::password\fP[MAXBUF]"
.PP
This is stored even if the <connect> block doesnt need a password, so that modules may check it.
.PP
-Definition at line 191 of file users.h.
+Definition at line 195 of file users.h.
.SS "unsigned int \fBuserrec::pingmax\fP"
.PP
Number of seconds between PINGs for this user (set from <connect:allow> tag.
.PP
-Definition at line 185 of file users.h.
+Definition at line 189 of file users.h.
.SS "\fBstd::string\fP \fBuserrec::recvq\fP"
.PP
User's receive queue.
.PP
Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
.PP
-Definition at line 197 of file users.h.
+Definition at line 201 of file users.h.
.PP
Referenced by AddBuffer(), BufferIsReady(), ClearBuffer(), GetBuffer(), and userrec().
.SS "long \fBuserrec::recvqmax\fP"
.PP
Maximum size this user's recvq can become.
.PP
-Definition at line 220 of file users.h.
+Definition at line 224 of file users.h.
.PP
Referenced by AddBuffer().
.SS "time_t \fBuserrec::reset_due\fP"
.PP
-Definition at line 207 of file users.h.
+Definition at line 211 of file users.h.
.PP
Referenced by userrec().
.SS "\fBstd::string\fP \fBuserrec::sendq\fP"
.PP
Lines waiting to be sent are stored here until their buffer is flushed.
.PP
-Definition at line 202 of file users.h.
+Definition at line 206 of file users.h.
.PP
Referenced by AddWriteBuf(), FlushWriteBuf(), and userrec().
.SS "long \fBuserrec::sendqmax\fP"
.PP
Maximum size this user's sendq can become.
.PP
-Definition at line 216 of file users.h.
+Definition at line 220 of file users.h.
.PP
Referenced by AddWriteBuf().
.SS "char* \fBuserrec::server\fP"
.PP
The server the user is connected to.
.PP
-Definition at line 153 of file users.h.
+Definition at line 157 of file users.h.
.PP
-Referenced by kick_channel(), and userrec().
+Referenced by AddWhoWas(), kick_channel(), and userrec().
.SS "long \fBuserrec::threshold\fP"
.PP
-Definition at line 208 of file users.h.
+Definition at line 212 of file users.h.
.SS "unsigned int \fBuserrec::timeout\fP"
.PP
Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected.
.PP
-Definition at line 170 of file users.h.
+Definition at line 174 of file users.h.
.PP
Referenced by userrec().
.SS "\fBstd::string\fP \fBuserrec::WriteError\fP"
.PP
-Definition at line 212 of file users.h.
+Definition at line 216 of file users.h.
.PP
Referenced by GetWriteError(), and SetWriteError().
-.TH "users.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "users.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include 'helperfuncs.h'\fP
.br
+\fC#include 'typedefs.h'\fP
+.br
+\fC#include 'socketengine.h'\fP
+.br
+\fC#include 'hashcomp.h'\fP
+.br
+\fC#include 'message.h'\fP
+.br
+\fC#include 'wildcard.h'\fP
+.br
+\fC#include 'xline.h'\fP
+.br
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "template<typename T> \fBstring\fP \fBConvToStr\fP (const T &in)"
+.br
+.ti -1c
+.RI "void \fBAddOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)"
+.br
+.ti -1c
+.RI "void \fBAddClient\fP (int socket, char *host, int port, bool iscached, char *ip)"
+.br
+.ti -1c
+.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)"
+.br
+.ti -1c
+.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)"
+.br
+.in -1c
.SS "Variables"
.in +1c
.ti -1c
-.RI "\fBServerConfig\fP * \fBConfig\fP"
+.RI "\fBInspIRCd\fP * \fBServerInstance\fP"
+.br
+.ti -1c
+.RI "int \fBWHOWAS_STALE\fP"
+.br
+.ti -1c
+.RI "int \fBWHOWAS_MAX\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBModule\fP * > \fBmodules\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBircd_module\fP * > \fBfactory\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBInspSocket\fP * > \fBmodule_sockets\fP"
+.br
+.ti -1c
+.RI "int \fBMODCOUNT\fP"
+.br
+.ti -1c
+.RI "\fBInspSocket\fP * \fBsocket_ref\fP [65535]"
.br
.ti -1c
.RI "time_t \fBTIME\fP"
.br
+.ti -1c
+.RI "\fBuserrec\fP * \fBfd_ref_table\fP [65536]"
+.br
+.ti -1c
+.RI "\fBServerConfig\fP * \fBConfig\fP"
+.br
+.ti -1c
+.RI "\fBuser_hash\fP \fBclientlist\fP"
+.br
+.ti -1c
+.RI "\fBwhowas_hash\fP \fBwhowas\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBuserrec\fP * > \fBlocal_users\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBuserrec\fP * > \fBall_opers\fP"
+.br
.in -1c
+.SH "Function Documentation"
+.PP
+.SS "void AddClient (int socket, char * host, int port, bool iscached, char * ip)"
+.PP
+Definition at line 524 of file users.cpp.
+.PP
+References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT.
+.PP
+.nf
+525 {
+526 string tempnick;
+527 char tn2[MAXBUF];
+528 user_hash::iterator iter;
+529
+530 tempnick = ConvToStr(socket) + '-unknown';
+531 sprintf(tn2,'%lu-unknown',(unsigned long)socket);
+532
+533 iter = clientlist.find(tempnick);
+534
+535 // fix by brain.
+536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be
+537 // using one as a registered connection. As theyre per fd, we can also safely assume
+538 // that we wont have collisions. Therefore, if the nick exists in the list, its only
+539 // used by a dead socket, erase the iterator so that the new client may reclaim it.
+540 // this was probably the cause of 'server ignores me when i hammer it with reconnects'
+541 // issue in earlier alphas/betas
+542 if (iter != clientlist.end())
+543 {
+544 userrec* goner = iter->second;
+545 delete goner;
+546 clientlist.erase(iter);
+547 }
+548
+549 /*
+550 * It is OK to access the value here this way since we know
+551 * it exists, we just created it above.
+552 *
+553 * At NO other time should you access a value in a map or a
+554 * hash_map this way.
+555 */
+556 clientlist[tempnick] = new userrec();
+557
+558 log(DEBUG,'AddClient: %lu %s %d %s',(unsigned long)socket,host,port,ip);
+559
+560 clientlist[tempnick]->fd = socket;
+561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
+562 strlcpy(clientlist[tempnick]->host, host,160);
+563 strlcpy(clientlist[tempnick]->dhost, host,160);
+564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName);
+565 strlcpy(clientlist[tempnick]->ident, 'unknown',IDENTMAX);
+566 clientlist[tempnick]->registered = 0;
+567 clientlist[tempnick]->signon = TIME + Config->dns_timeout;
+568 clientlist[tempnick]->lastping = 1;
+569 clientlist[tempnick]->port = port;
+570 strlcpy(clientlist[tempnick]->ip,ip,16);
+571
+572 // set the registration timeout for this user
+573 unsigned long class_regtimeout = 90;
+574 int class_flood = 0;
+575 long class_threshold = 5;
+576 long class_sqmax = 262144; // 256kb
+577 long class_rqmax = 4096; // 4k
+578
+579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
+580 {
+581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
+582 {
+583 class_regtimeout = (unsigned long)i->registration_timeout;
+584 class_flood = i->flood;
+585 clientlist[tempnick]->pingmax = i->pingtime;
+586 class_threshold = i->threshold;
+587 class_sqmax = i->sendqmax;
+588 class_rqmax = i->recvqmax;
+589 break;
+590 }
+591 }
+592
+593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout;
+594 clientlist[tempnick]->timeout = TIME+class_regtimeout;
+595 clientlist[tempnick]->flood = class_flood;
+596 clientlist[tempnick]->threshold = class_threshold;
+597 clientlist[tempnick]->sendqmax = class_sqmax;
+598 clientlist[tempnick]->recvqmax = class_rqmax;
+599
+600 ucrec a;
+601 a.channel = NULL;
+602 a.uc_modes = 0;
+603 for (int i = 0; i < MAXCHANS; i++)
+604 clientlist[tempnick]->chans.push_back(a);
+605
+606 if (clientlist.size() > Config->SoftLimit)
+607 {
+608 kill_link(clientlist[tempnick],'No more connections allowed');
+609 return;
+610 }
+611
+612 if (clientlist.size() >= MAXCLIENTS)
+613 {
+614 kill_link(clientlist[tempnick],'No more connections allowed');
+615 return;
+616 }
+617
+618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table.
+619 // its a pretty big but for the moment valid assumption:
+620 // file descriptors are handed out starting at 0, and are recycled as theyre freed.
+621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the
+622 // irc server at once (or the irc server otherwise initiating this many connections, files etc)
+623 // which for the time being is a physical impossibility (even the largest networks dont have more
+624 // than about 10,000 users on ONE server!)
+625 if ((unsigned)socket > 65534)
+626 {
+627 kill_link(clientlist[tempnick],'Server is full');
+628 return;
+629 }
+630 char* e = matches_exception(ip);
+631 if (!e)
+632 {
+633 char* r = matches_zline(ip);
+634 if (r)
+635 {
+636 char reason[MAXBUF];
+637 snprintf(reason,MAXBUF,'Z-Lined: %s',r);
+638 kill_link(clientlist[tempnick],reason);
+639 return;
+640 }
+641 }
+642 fd_ref_table[socket] = clientlist[tempnick];
+643 local_users.push_back(clientlist[tempnick]);
+644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT);
+645 }
+.fi
+.PP
+.SS "void AddOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 330 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+331 {
+332 log(DEBUG,'Oper added to optimization list');
+333 all_opers.push_back(user);
+334 }
+.fi
+.PP
+.SS "void AddWhoWas (\fBuserrec\fP * u)"
+.PP
+Definition at line 471 of file users.cpp.
+.PP
+References DEBUG, WhoWasUser::dhost, userrec::dhost, WhoWasUser::fullname, userrec::fullname, WhoWasUser::host, connection::host, WhoWasUser::ident, userrec::ident, log(), userrec::nick, WhoWasUser::nick, WhoWasUser::server, userrec::server, WhoWasUser::signon, connection::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE.
+.PP
+Referenced by kill_link().
+.PP
+.nf
+472 {
+473 whowas_hash::iterator iter = whowas.find(u->nick);
+474 WhoWasUser *a = new WhoWasUser();
+475 strlcpy(a->nick,u->nick,NICKMAX);
+476 strlcpy(a->ident,u->ident,IDENTMAX);
+477 strlcpy(a->dhost,u->dhost,160);
+478 strlcpy(a->host,u->host,160);
+479 strlcpy(a->fullname,u->fullname,MAXGECOS);
+480 strlcpy(a->server,u->server,256);
+481 a->signon = u->signon;
+482
+483 /* MAX_WHOWAS: max number of /WHOWAS items
+484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and
+485 * can be replaced by a newer one
+486 */
+487
+488 if (iter == whowas.end())
+489 {
+490 if (whowas.size() >= (unsigned)WHOWAS_MAX)
+491 {
+492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++)
+493 {
+494 // 3600 seconds in an hour ;)
+495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
+496 {
+497 // delete the old one
+498 if (i->second) delete i->second;
+499 // replace with new one
+500 i->second = a;
+501 log(DEBUG,'added WHOWAS entry, purged an old record');
+502 return;
+503 }
+504 }
+505 // no space left and user doesnt exist. Don't leave ram in use!
+506 log(DEBUG,'Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram');
+507 delete a;
+508 }
+509 else
+510 {
+511 log(DEBUG,'added fresh WHOWAS entry');
+512 whowas[a->nick] = a;
+513 }
+514 }
+515 else
+516 {
+517 log(DEBUG,'updated WHOWAS entry');
+518 if (iter->second) delete iter->second;
+519 iter->second = a;
+520 }
+521 }
+.fi
+.PP
+.SS "void ConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 731 of file users.cpp.
+.PP
+References userrec::dns_done, FullConnectUser(), and connection::registered.
+.PP
+.nf
+732 {
+733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on
+734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user)))
+735 {
+736 FullConnectUser(user);
+737 }
+738 }
+.fi
+.PP
+.SS "template<typename T> \fBstring\fP ConvToStr (const T & in)\fC [inline]\fP"
+.PP
+Definition at line 56 of file users.cpp.
+.PP
+Referenced by AddClient().
+.PP
+.nf
+57 {
+58 stringstream tmp;
+59 if (!(tmp << in)) return string();
+60 return tmp.str();
+61 }
+.fi
+.PP
+.SS "void DeleteOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 336 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+337 {
+338 for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++)
+339 {
+340 if (*a == user)
+341 {
+342 log(DEBUG,'Oper removed from optimization list');
+343 all_opers.erase(a);
+344 return;
+345 }
+346 }
+347 }
+.fi
+.PP
+.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)"
+.PP
+Definition at line 769 of file users.cpp.
+.PP
+References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions.
+.PP
+Referenced by Server::ChangeUserNick().
+.PP
+.nf
+770 {
+771 char nick[MAXBUF];
+772 int MOD_RESULT = 0;
+773
+774 strcpy(nick,'');
+775
+776 FOREACH_RESULT(OnUserPreNick(user,newnick));
+777 if (MOD_RESULT) {
+778 ServerInstance->stats->statsCollisions++;
+779 kill_link(user,'Nickname collision');
+780 return;
+781 }
+782 if (matches_qline(newnick))
+783 {
+784 ServerInstance->stats->statsCollisions++;
+785 kill_link(user,'Nickname collision');
+786 return;
+787 }
+788
+789 if (user)
+790 {
+791 if (newnick)
+792 {
+793 strncpy(nick,newnick,MAXBUF);
+794 }
+795 if (user->registered == 7)
+796 {
+797 char* pars[1];
+798 pars[0] = nick;
+799 std::string cmd = 'NICK';
+800 ServerInstance->Parser->CallHandler(cmd,pars,1,user);
+801 }
+802 }
+803 }
+.fi
+.PP
+.SS "void FullConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 647 of file users.cpp.
+.PP
+References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ().
+.PP
+Referenced by ConnectUser().
+.PP
+.nf
+648 {
+649 ServerInstance->stats->statsConnects++;
+650 user->idle_lastmsg = TIME;
+651 log(DEBUG,'ConnectUser: %s',user->nick);
+652
+653 if ((strcmp(Passwd(user),'')) && (!user->haspassed))
+654 {
+655 kill_link(user,'Invalid password');
+656 return;
+657 }
+658 if (IsDenied(user))
+659 {
+660 kill_link(user,'Unauthorised connection');
+661 return;
+662 }
+663
+664 char match_against[MAXBUF];
+665 snprintf(match_against,MAXBUF,'%s@%s',user->ident,user->host);
+666 char* e = matches_exception(match_against);
+667 if (!e)
+668 {
+669 char* r = matches_gline(match_against);
+670 if (r)
+671 {
+672 char reason[MAXBUF];
+673 snprintf(reason,MAXBUF,'G-Lined: %s',r);
+674 kill_link_silent(user,reason);
+675 return;
+676 }
+677 r = matches_kline(user->host);
+678 if (r)
+679 {
+680 char reason[MAXBUF];
+681 snprintf(reason,MAXBUF,'K-Lined: %s',r);
+682 kill_link_silent(user,reason);
+683 return;
+684 }
+685 }
+686
+687
+688 WriteServ(user->fd,'NOTICE Auth :Welcome to \002%s\002!',Config->Network);
+689 WriteServ(user->fd,'001 %s :Welcome to the %s IRC Network %s!%s@%s',user->nick,Config->Network,user->nick,user->ident,user->host);
+690 WriteServ(user->fd,'002 %s :Your host is %s, running version %s',user->nick,Config->ServerName,VERSION);
+691 WriteServ(user->fd,'003 %s :This server was created %s %s',user->nick,__TIME__,__DATE__);
+692 WriteServ(user->fd,'004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN',user->nick,Config->ServerName,VERSION);
+693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
+694 std::stringstream v;
+695 v << 'WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=' << MAXCHANS;
+696 v << ' MAXBANS=60 NICKLEN=' << NICKMAX;
+697 v << ' TOPICLEN=' << MAXTOPIC << ' KICKLEN=' << MAXKICK << ' MAXTARGETS=20 AWAYLEN=' << MAXAWAY << ' CHANMODES=ohvb,k,l,psmnti NETWORK=';
+698 v << Config->Network;
+699 std::string data005 = v.str();
+700 FOREACH_MOD On005Numeric(data005);
+701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...
+702 // so i'd better split it :)
+703 std::stringstream out(data005);
+704 std::string token = '';
+705 std::string line5 = '';
+706 int token_counter = 0;
+707 while (!out.eof())
+708 {
+709 out >> token;
+710 line5 = line5 + token + ' ';
+711 token_counter++;
+712 if ((token_counter >= 13) || (out.eof() == true))
+713 {
+714 WriteServ(user->fd,'005 %s %s:are supported by this server',user->nick,line5.c_str());
+715 line5 = '';
+716 token_counter = 0;
+717 }
+718 }
+719 ShowMOTD(user);
+720
+721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out
+722 // onto the network and produce 'fake direction'
+723 FOREACH_MOD OnUserConnect(user);
+724 FOREACH_MOD OnGlobalConnect(user);
+725 user->registered = 7;
+726 WriteOpers('*** Client connecting on port %lu: %s!%s@%s [%s]',(unsigned long)user->port,user->nick,user->ident,user->host,user->ip);
+727 }
+.fi
+.PP
+.SS "void kill_link (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 349 of file users.cpp.
+.PP
+References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers().
+.PP
+Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser().
+.PP
+.nf
+350 {
+351 user_hash::iterator iter = clientlist.find(user->nick);
+352
+353 char reason[MAXBUF];
+354
+355 strncpy(reason,r,MAXBUF);
+356
+357 if (strlen(reason)>MAXQUIT)
+358 {
+359 reason[MAXQUIT-1] = '\0';
+360 }
+361
+362 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+363 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+364 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+365
+366 if (user->registered == 7) {
+367 FOREACH_MOD OnUserQuit(user,reason);
+368 WriteCommonExcept(user,'QUIT :%s',reason);
+369 }
+370
+371 user->FlushWriteBuf();
+372
+373 FOREACH_MOD OnUserDisconnect(user);
+374
+375 if (user->fd > -1)
+376 {
+377 if (Config->GetIOHook(user->port))
+378 {
+379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+380 }
+381 ServerInstance->SE->DelFd(user->fd);
+382 user->CloseSocket();
+383 }
+384
+385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
+386 // if they were an oper with +s.
+387 if (user->registered == 7) {
+388 purge_empty_chans(user);
+389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE)
+390 if (user->fd > -1)
+391 WriteOpers('*** Client exiting: %s!%s@%s [%s]',user->nick,user->ident,user->host,reason);
+392 AddWhoWas(user);
+393 }
+394
+395 if (iter != clientlist.end())
+396 {
+397 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+398 if (user->fd > -1)
+399 {
+400 fd_ref_table[user->fd] = NULL;
+401 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+402 {
+403 local_users.erase(find(local_users.begin(),local_users.end(),user));
+404 log(DEBUG,'Delete local user');
+405 }
+406 }
+407 clientlist.erase(iter);
+408 }
+409 delete user;
+410 }
+.fi
+.PP
+.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 412 of file users.cpp.
+.PP
+References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept().
+.PP
+Referenced by FullConnectUser().
+.PP
+.nf
+413 {
+414 user_hash::iterator iter = clientlist.find(user->nick);
+415
+416 char reason[MAXBUF];
+417
+418 strncpy(reason,r,MAXBUF);
+419
+420 if (strlen(reason)>MAXQUIT)
+421 {
+422 reason[MAXQUIT-1] = '\0';
+423 }
+424
+425 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+426 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+427 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+428
+429 user->FlushWriteBuf();
+430
+431 if (user->registered == 7) {
+432 FOREACH_MOD OnUserQuit(user,reason);
+433 WriteCommonExcept(user,'QUIT :%s',reason);
+434 }
+435
+436 FOREACH_MOD OnUserDisconnect(user);
+437
+438 if (user->fd > -1)
+439 {
+440 if (Config->GetIOHook(user->port))
+441 {
+442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+443 }
+444 ServerInstance->SE->DelFd(user->fd);
+445 user->CloseSocket();
+446 }
+447
+448 if (user->registered == 7) {
+449 purge_empty_chans(user);
+450 }
+451
+452 if (iter != clientlist.end())
+453 {
+454 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+455 if (user->fd > -1)
+456 {
+457 fd_ref_table[user->fd] = NULL;
+458 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+459 {
+460 log(DEBUG,'Delete local user');
+461 local_users.erase(find(local_users.begin(),local_users.end(),user));
+462 }
+463 }
+464 clientlist.erase(iter);
+465 }
+466 delete user;
+467 }
+.fi
+.PP
+.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)"
+.PP
+Definition at line 743 of file users.cpp.
+.PP
+References clientlist, DEBUG, and log().
+.PP
+.nf
+744 {
+745 //user_hash::iterator newnick;
+746 user_hash::iterator oldnick = clientlist.find(Old);
+747
+748 log(DEBUG,'ReHashNick: %s %s',Old,New);
+749
+750 if (!strcasecmp(Old,New))
+751 {
+752 log(DEBUG,'old nick is new nick, skipping');
+753 return oldnick->second;
+754 }
+755
+756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */
+757
+758 log(DEBUG,'ReHashNick: Found hashed nick %s',Old);
+759
+760 userrec* olduser = oldnick->second;
+761 clientlist[New] = olduser;
+762 clientlist.erase(oldnick);
+763
+764 log(DEBUG,'ReHashNick: Nick rehashed as %s',New);
+765
+766 return clientlist[New];
+767 }
+.fi
+.PP
.SH "Variable Documentation"
.PP
+.SS "std::vector<\fBuserrec\fP*> \fBall_opers\fP"
+.PP
+Definition at line 54 of file users.cpp.
+.PP
+Referenced by AddOper(), and DeleteOper().
+.SS "\fBuser_hash\fP \fBclientlist\fP"
+.PP
.SS "\fBServerConfig\fP* \fBConfig\fP"
.PP
+.SS "std::vector<\fBircd_module\fP*> factory"
+.PP
+.SS "\fBuserrec\fP* \fBfd_ref_table\fP[65536]"
+.PP
+.SS "std::vector<\fBuserrec\fP*> \fBlocal_users\fP"
+.PP
+Definition at line 52 of file users.cpp.
+.PP
+Referenced by AddClient(), kill_link(), and kill_link_silent().
+.SS "int \fBMODCOUNT\fP"
+.PP
+.SS "std::vector<\fBInspSocket\fP*> \fBmodule_sockets\fP"
+.PP
+.SS "std::vector<\fBModule\fP*> modules"
+.PP
+.SS "\fBInspIRCd\fP* \fBServerInstance\fP"
+.PP
+.SS "\fBInspSocket\fP* \fBsocket_ref\fP[65535]"
+.PP
+Definition at line 43 of file socket.cpp.
.SS "time_t \fBTIME\fP"
.PP
+.SS "\fBwhowas_hash\fP \fBwhowas\fP"
+.PP
+Referenced by AddWhoWas().
+.SS "int \fBWHOWAS_MAX\fP"
+.PP
+.SS "int \fBWHOWAS_STALE\fP"
+.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "users.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "users.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.br
\fC#include <string>\fP
.br
+\fC#include 'hashcomp.h'\fP
+.br
.SS "Classes"
.br
.RI "\fIHolds a complete list of all allow and deny tags from the configuration file (connection classes). \fP"
.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "template<typename T> \fBstring\fP \fBConvToStr\fP (const T &in)"
+.br
+.ti -1c
+.RI "void \fBAddOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)"
+.br
+.ti -1c
+.RI "void \fBAddClient\fP (int socket, char *host, int port, bool iscached, char *ip)"
+.br
+.ti -1c
+.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)"
+.br
+.ti -1c
+.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)"
+.br
+.in -1c
.SH "Define Documentation"
.PP
.SS "#define CC_ALLOW 0"
.PP
-Definition at line 34 of file users.h.
+Definition at line 36 of file users.h.
+.PP
+Referenced by AddClient().
.SS "#define CC_DENY 1"
.PP
-Definition at line 35 of file users.h.
+Definition at line 37 of file users.h.
.SS "#define STATUS_HOP 2"
.PP
-Definition at line 30 of file users.h.
+Definition at line 32 of file users.h.
.PP
Referenced by kick_channel().
.SS "#define STATUS_NORMAL 0"
.PP
-Definition at line 32 of file users.h.
+Definition at line 34 of file users.h.
.SS "#define STATUS_OP 4"
.PP
-Definition at line 29 of file users.h.
+Definition at line 31 of file users.h.
.SS "#define STATUS_VOICE 1"
.PP
-Definition at line 31 of file users.h.
+Definition at line 33 of file users.h.
.SH "Typedef Documentation"
.PP
.SS "typedef std::vector<\fBConnectClass\fP> \fBClassVector\fP"
.PP
Holds a complete list of all allow and deny tags from the configuration file (connection classes).
.PP
-Definition at line 103 of file users.h.
+Definition at line 107 of file users.h.
.SS "typedef std::vector<\fBInvited\fP> \fBInvitedList\fP"
.PP
Holds a complete list of all channels to which a user has been invited and has not yet joined.
.PP
-Definition at line 97 of file users.h.
+Definition at line 101 of file users.h.
+.SH "Function Documentation"
+.PP
+.SS "void AddClient (int socket, char * host, int port, bool iscached, char * ip)"
+.PP
+Definition at line 524 of file users.cpp.
+.PP
+References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT.
+.PP
+.nf
+525 {
+526 string tempnick;
+527 char tn2[MAXBUF];
+528 user_hash::iterator iter;
+529
+530 tempnick = ConvToStr(socket) + '-unknown';
+531 sprintf(tn2,'%lu-unknown',(unsigned long)socket);
+532
+533 iter = clientlist.find(tempnick);
+534
+535 // fix by brain.
+536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be
+537 // using one as a registered connection. As theyre per fd, we can also safely assume
+538 // that we wont have collisions. Therefore, if the nick exists in the list, its only
+539 // used by a dead socket, erase the iterator so that the new client may reclaim it.
+540 // this was probably the cause of 'server ignores me when i hammer it with reconnects'
+541 // issue in earlier alphas/betas
+542 if (iter != clientlist.end())
+543 {
+544 userrec* goner = iter->second;
+545 delete goner;
+546 clientlist.erase(iter);
+547 }
+548
+549 /*
+550 * It is OK to access the value here this way since we know
+551 * it exists, we just created it above.
+552 *
+553 * At NO other time should you access a value in a map or a
+554 * hash_map this way.
+555 */
+556 clientlist[tempnick] = new userrec();
+557
+558 log(DEBUG,'AddClient: %lu %s %d %s',(unsigned long)socket,host,port,ip);
+559
+560 clientlist[tempnick]->fd = socket;
+561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
+562 strlcpy(clientlist[tempnick]->host, host,160);
+563 strlcpy(clientlist[tempnick]->dhost, host,160);
+564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName);
+565 strlcpy(clientlist[tempnick]->ident, 'unknown',IDENTMAX);
+566 clientlist[tempnick]->registered = 0;
+567 clientlist[tempnick]->signon = TIME + Config->dns_timeout;
+568 clientlist[tempnick]->lastping = 1;
+569 clientlist[tempnick]->port = port;
+570 strlcpy(clientlist[tempnick]->ip,ip,16);
+571
+572 // set the registration timeout for this user
+573 unsigned long class_regtimeout = 90;
+574 int class_flood = 0;
+575 long class_threshold = 5;
+576 long class_sqmax = 262144; // 256kb
+577 long class_rqmax = 4096; // 4k
+578
+579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
+580 {
+581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
+582 {
+583 class_regtimeout = (unsigned long)i->registration_timeout;
+584 class_flood = i->flood;
+585 clientlist[tempnick]->pingmax = i->pingtime;
+586 class_threshold = i->threshold;
+587 class_sqmax = i->sendqmax;
+588 class_rqmax = i->recvqmax;
+589 break;
+590 }
+591 }
+592
+593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout;
+594 clientlist[tempnick]->timeout = TIME+class_regtimeout;
+595 clientlist[tempnick]->flood = class_flood;
+596 clientlist[tempnick]->threshold = class_threshold;
+597 clientlist[tempnick]->sendqmax = class_sqmax;
+598 clientlist[tempnick]->recvqmax = class_rqmax;
+599
+600 ucrec a;
+601 a.channel = NULL;
+602 a.uc_modes = 0;
+603 for (int i = 0; i < MAXCHANS; i++)
+604 clientlist[tempnick]->chans.push_back(a);
+605
+606 if (clientlist.size() > Config->SoftLimit)
+607 {
+608 kill_link(clientlist[tempnick],'No more connections allowed');
+609 return;
+610 }
+611
+612 if (clientlist.size() >= MAXCLIENTS)
+613 {
+614 kill_link(clientlist[tempnick],'No more connections allowed');
+615 return;
+616 }
+617
+618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table.
+619 // its a pretty big but for the moment valid assumption:
+620 // file descriptors are handed out starting at 0, and are recycled as theyre freed.
+621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the
+622 // irc server at once (or the irc server otherwise initiating this many connections, files etc)
+623 // which for the time being is a physical impossibility (even the largest networks dont have more
+624 // than about 10,000 users on ONE server!)
+625 if ((unsigned)socket > 65534)
+626 {
+627 kill_link(clientlist[tempnick],'Server is full');
+628 return;
+629 }
+630 char* e = matches_exception(ip);
+631 if (!e)
+632 {
+633 char* r = matches_zline(ip);
+634 if (r)
+635 {
+636 char reason[MAXBUF];
+637 snprintf(reason,MAXBUF,'Z-Lined: %s',r);
+638 kill_link(clientlist[tempnick],reason);
+639 return;
+640 }
+641 }
+642 fd_ref_table[socket] = clientlist[tempnick];
+643 local_users.push_back(clientlist[tempnick]);
+644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT);
+645 }
+.fi
+.PP
+.SS "void AddOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 330 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+331 {
+332 log(DEBUG,'Oper added to optimization list');
+333 all_opers.push_back(user);
+334 }
+.fi
+.PP
+.SS "void AddWhoWas (\fBuserrec\fP * u)"
+.PP
+Definition at line 471 of file users.cpp.
+.PP
+References DEBUG, userrec::dhost, WhoWasUser::dhost, userrec::fullname, WhoWasUser::fullname, connection::host, WhoWasUser::host, userrec::ident, WhoWasUser::ident, log(), WhoWasUser::nick, userrec::nick, userrec::server, WhoWasUser::server, connection::signon, WhoWasUser::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE.
+.PP
+Referenced by kill_link().
+.PP
+.nf
+472 {
+473 whowas_hash::iterator iter = whowas.find(u->nick);
+474 WhoWasUser *a = new WhoWasUser();
+475 strlcpy(a->nick,u->nick,NICKMAX);
+476 strlcpy(a->ident,u->ident,IDENTMAX);
+477 strlcpy(a->dhost,u->dhost,160);
+478 strlcpy(a->host,u->host,160);
+479 strlcpy(a->fullname,u->fullname,MAXGECOS);
+480 strlcpy(a->server,u->server,256);
+481 a->signon = u->signon;
+482
+483 /* MAX_WHOWAS: max number of /WHOWAS items
+484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and
+485 * can be replaced by a newer one
+486 */
+487
+488 if (iter == whowas.end())
+489 {
+490 if (whowas.size() >= (unsigned)WHOWAS_MAX)
+491 {
+492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++)
+493 {
+494 // 3600 seconds in an hour ;)
+495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
+496 {
+497 // delete the old one
+498 if (i->second) delete i->second;
+499 // replace with new one
+500 i->second = a;
+501 log(DEBUG,'added WHOWAS entry, purged an old record');
+502 return;
+503 }
+504 }
+505 // no space left and user doesnt exist. Don't leave ram in use!
+506 log(DEBUG,'Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram');
+507 delete a;
+508 }
+509 else
+510 {
+511 log(DEBUG,'added fresh WHOWAS entry');
+512 whowas[a->nick] = a;
+513 }
+514 }
+515 else
+516 {
+517 log(DEBUG,'updated WHOWAS entry');
+518 if (iter->second) delete iter->second;
+519 iter->second = a;
+520 }
+521 }
+.fi
+.PP
+.SS "void ConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 731 of file users.cpp.
+.PP
+References userrec::dns_done, FullConnectUser(), and connection::registered.
+.PP
+.nf
+732 {
+733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on
+734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user)))
+735 {
+736 FullConnectUser(user);
+737 }
+738 }
+.fi
+.PP
+.SS "template<typename T> \fBstring\fP ConvToStr (const T & in)\fC [inline]\fP"
+.PP
+Definition at line 56 of file users.cpp.
+.PP
+Referenced by AddClient().
+.PP
+.nf
+57 {
+58 stringstream tmp;
+59 if (!(tmp << in)) return string();
+60 return tmp.str();
+61 }
+.fi
+.PP
+.SS "void DeleteOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 336 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+337 {
+338 for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++)
+339 {
+340 if (*a == user)
+341 {
+342 log(DEBUG,'Oper removed from optimization list');
+343 all_opers.erase(a);
+344 return;
+345 }
+346 }
+347 }
+.fi
+.PP
+.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)"
+.PP
+Definition at line 769 of file users.cpp.
+.PP
+References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions.
+.PP
+Referenced by Server::ChangeUserNick().
+.PP
+.nf
+770 {
+771 char nick[MAXBUF];
+772 int MOD_RESULT = 0;
+773
+774 strcpy(nick,'');
+775
+776 FOREACH_RESULT(OnUserPreNick(user,newnick));
+777 if (MOD_RESULT) {
+778 ServerInstance->stats->statsCollisions++;
+779 kill_link(user,'Nickname collision');
+780 return;
+781 }
+782 if (matches_qline(newnick))
+783 {
+784 ServerInstance->stats->statsCollisions++;
+785 kill_link(user,'Nickname collision');
+786 return;
+787 }
+788
+789 if (user)
+790 {
+791 if (newnick)
+792 {
+793 strncpy(nick,newnick,MAXBUF);
+794 }
+795 if (user->registered == 7)
+796 {
+797 char* pars[1];
+798 pars[0] = nick;
+799 std::string cmd = 'NICK';
+800 ServerInstance->Parser->CallHandler(cmd,pars,1,user);
+801 }
+802 }
+803 }
+.fi
+.PP
+.SS "void FullConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 647 of file users.cpp.
+.PP
+References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ().
+.PP
+Referenced by ConnectUser().
+.PP
+.nf
+648 {
+649 ServerInstance->stats->statsConnects++;
+650 user->idle_lastmsg = TIME;
+651 log(DEBUG,'ConnectUser: %s',user->nick);
+652
+653 if ((strcmp(Passwd(user),'')) && (!user->haspassed))
+654 {
+655 kill_link(user,'Invalid password');
+656 return;
+657 }
+658 if (IsDenied(user))
+659 {
+660 kill_link(user,'Unauthorised connection');
+661 return;
+662 }
+663
+664 char match_against[MAXBUF];
+665 snprintf(match_against,MAXBUF,'%s@%s',user->ident,user->host);
+666 char* e = matches_exception(match_against);
+667 if (!e)
+668 {
+669 char* r = matches_gline(match_against);
+670 if (r)
+671 {
+672 char reason[MAXBUF];
+673 snprintf(reason,MAXBUF,'G-Lined: %s',r);
+674 kill_link_silent(user,reason);
+675 return;
+676 }
+677 r = matches_kline(user->host);
+678 if (r)
+679 {
+680 char reason[MAXBUF];
+681 snprintf(reason,MAXBUF,'K-Lined: %s',r);
+682 kill_link_silent(user,reason);
+683 return;
+684 }
+685 }
+686
+687
+688 WriteServ(user->fd,'NOTICE Auth :Welcome to \002%s\002!',Config->Network);
+689 WriteServ(user->fd,'001 %s :Welcome to the %s IRC Network %s!%s@%s',user->nick,Config->Network,user->nick,user->ident,user->host);
+690 WriteServ(user->fd,'002 %s :Your host is %s, running version %s',user->nick,Config->ServerName,VERSION);
+691 WriteServ(user->fd,'003 %s :This server was created %s %s',user->nick,__TIME__,__DATE__);
+692 WriteServ(user->fd,'004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN',user->nick,Config->ServerName,VERSION);
+693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
+694 std::stringstream v;
+695 v << 'WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=' << MAXCHANS;
+696 v << ' MAXBANS=60 NICKLEN=' << NICKMAX;
+697 v << ' TOPICLEN=' << MAXTOPIC << ' KICKLEN=' << MAXKICK << ' MAXTARGETS=20 AWAYLEN=' << MAXAWAY << ' CHANMODES=ohvb,k,l,psmnti NETWORK=';
+698 v << Config->Network;
+699 std::string data005 = v.str();
+700 FOREACH_MOD On005Numeric(data005);
+701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...
+702 // so i'd better split it :)
+703 std::stringstream out(data005);
+704 std::string token = '';
+705 std::string line5 = '';
+706 int token_counter = 0;
+707 while (!out.eof())
+708 {
+709 out >> token;
+710 line5 = line5 + token + ' ';
+711 token_counter++;
+712 if ((token_counter >= 13) || (out.eof() == true))
+713 {
+714 WriteServ(user->fd,'005 %s %s:are supported by this server',user->nick,line5.c_str());
+715 line5 = '';
+716 token_counter = 0;
+717 }
+718 }
+719 ShowMOTD(user);
+720
+721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out
+722 // onto the network and produce 'fake direction'
+723 FOREACH_MOD OnUserConnect(user);
+724 FOREACH_MOD OnGlobalConnect(user);
+725 user->registered = 7;
+726 WriteOpers('*** Client connecting on port %lu: %s!%s@%s [%s]',(unsigned long)user->port,user->nick,user->ident,user->host,user->ip);
+727 }
+.fi
+.PP
+.SS "void kill_link (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 349 of file users.cpp.
+.PP
+References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers().
+.PP
+Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser().
+.PP
+.nf
+350 {
+351 user_hash::iterator iter = clientlist.find(user->nick);
+352
+353 char reason[MAXBUF];
+354
+355 strncpy(reason,r,MAXBUF);
+356
+357 if (strlen(reason)>MAXQUIT)
+358 {
+359 reason[MAXQUIT-1] = '\0';
+360 }
+361
+362 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+363 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+364 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+365
+366 if (user->registered == 7) {
+367 FOREACH_MOD OnUserQuit(user,reason);
+368 WriteCommonExcept(user,'QUIT :%s',reason);
+369 }
+370
+371 user->FlushWriteBuf();
+372
+373 FOREACH_MOD OnUserDisconnect(user);
+374
+375 if (user->fd > -1)
+376 {
+377 if (Config->GetIOHook(user->port))
+378 {
+379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+380 }
+381 ServerInstance->SE->DelFd(user->fd);
+382 user->CloseSocket();
+383 }
+384
+385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
+386 // if they were an oper with +s.
+387 if (user->registered == 7) {
+388 purge_empty_chans(user);
+389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE)
+390 if (user->fd > -1)
+391 WriteOpers('*** Client exiting: %s!%s@%s [%s]',user->nick,user->ident,user->host,reason);
+392 AddWhoWas(user);
+393 }
+394
+395 if (iter != clientlist.end())
+396 {
+397 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+398 if (user->fd > -1)
+399 {
+400 fd_ref_table[user->fd] = NULL;
+401 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+402 {
+403 local_users.erase(find(local_users.begin(),local_users.end(),user));
+404 log(DEBUG,'Delete local user');
+405 }
+406 }
+407 clientlist.erase(iter);
+408 }
+409 delete user;
+410 }
+.fi
+.PP
+.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 412 of file users.cpp.
+.PP
+References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept().
+.PP
+Referenced by FullConnectUser().
+.PP
+.nf
+413 {
+414 user_hash::iterator iter = clientlist.find(user->nick);
+415
+416 char reason[MAXBUF];
+417
+418 strncpy(reason,r,MAXBUF);
+419
+420 if (strlen(reason)>MAXQUIT)
+421 {
+422 reason[MAXQUIT-1] = '\0';
+423 }
+424
+425 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+426 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+427 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+428
+429 user->FlushWriteBuf();
+430
+431 if (user->registered == 7) {
+432 FOREACH_MOD OnUserQuit(user,reason);
+433 WriteCommonExcept(user,'QUIT :%s',reason);
+434 }
+435
+436 FOREACH_MOD OnUserDisconnect(user);
+437
+438 if (user->fd > -1)
+439 {
+440 if (Config->GetIOHook(user->port))
+441 {
+442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+443 }
+444 ServerInstance->SE->DelFd(user->fd);
+445 user->CloseSocket();
+446 }
+447
+448 if (user->registered == 7) {
+449 purge_empty_chans(user);
+450 }
+451
+452 if (iter != clientlist.end())
+453 {
+454 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+455 if (user->fd > -1)
+456 {
+457 fd_ref_table[user->fd] = NULL;
+458 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+459 {
+460 log(DEBUG,'Delete local user');
+461 local_users.erase(find(local_users.begin(),local_users.end(),user));
+462 }
+463 }
+464 clientlist.erase(iter);
+465 }
+466 delete user;
+467 }
+.fi
+.PP
+.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)"
+.PP
+Definition at line 743 of file users.cpp.
+.PP
+References clientlist, DEBUG, and log().
+.PP
+.nf
+744 {
+745 //user_hash::iterator newnick;
+746 user_hash::iterator oldnick = clientlist.find(Old);
+747
+748 log(DEBUG,'ReHashNick: %s %s',Old,New);
+749
+750 if (!strcasecmp(Old,New))
+751 {
+752 log(DEBUG,'old nick is new nick, skipping');
+753 return oldnick->second;
+754 }
+755
+756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */
+757
+758 log(DEBUG,'ReHashNick: Found hashed nick %s',Old);
+759
+760 userrec* olduser = oldnick->second;
+761 clientlist[New] = olduser;
+762 clientlist.erase(oldnick);
+763
+764 log(DEBUG,'ReHashNick: Nick rehashed as %s',New);
+765
+766 return clientlist[New];
+767 }
+.fi
+.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
-.TH "xline.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "xline.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
.PP
.SS "char* matches_exception (const char * host)"
.PP
+Referenced by AddClient(), and FullConnectUser().
.SS "char* matches_gline (const char * host)"
.PP
+Referenced by FullConnectUser().
.SS "char* matches_kline (const char * host)"
.PP
+Referenced by FullConnectUser().
.SS "char* matches_qline (const char * nick)"
.PP
+Referenced by force_nickchange().
.SS "char* matches_zline (const char * ipaddr)"
.PP
+Referenced by AddClient().
.SS "bool qline_make_global (const char * nickname)"
.PP
.SS "void qline_set_creation_time (char * nick, time_t create_time)"
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>InspIRCd: aes.h Source File</title>
+<link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.4-20050815 -->
+<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000004.html">include</a></div>
+<h1>aes.h</h1><a href="aes_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __AES_H__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __AES_H__</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include <cstring></span>
+<a name="l00005"></a>00005
+<a name="l00006"></a>00006 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
+<a name="l00007"></a>00007
+<a name="l00010"></a><a class="code" href="classAES.html">00010</a> <span class="keyword">class </span><a class="code" href="classAES.html">AES</a>
+<a name="l00011"></a>00011 {
+<a name="l00012"></a>00012 <span class="keyword">public</span>:
+<a name="l00013"></a>00013 <span class="keyword">enum</span> { <a class="code" href="classAES.html#_40_30ECB">ECB</a>=0, <a class="code" href="classAES.html#_40_30CBC">CBC</a>=1, <a class="code" href="classAES.html#_40_30CFB">CFB</a>=2 };
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="keyword">private</span>:
+<a name="l00016"></a>00016 <span class="keyword">enum</span> { <a class="code" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">DEFAULT_BLOCK_SIZE</a>=16 };
+<a name="l00017"></a>00017 <span class="keyword">enum</span> { <a class="code" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">MAX_BLOCK_SIZE</a>=32, <a class="code" href="classAES.html#_40_32MAX_5FROUNDS">MAX_ROUNDS</a>=14, <a class="code" href="classAES.html#_40_32MAX_5FKC">MAX_KC</a>=8, <a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>=8 };
+<a name="l00018"></a>00018
+<a name="l00019"></a><a class="code" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">00019</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">Mul</a>(<span class="keywordtype">int</span> <a class="code" href="classAES.html#a_5BMAX_5FBC_5D">a</a>, <span class="keywordtype">int</span> b)
+<a name="l00020"></a>00020 {
+<a name="l00021"></a>00021 <span class="keywordflow">return</span> (a != 0 && b != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(<a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[a & 0xFF] + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b & 0xFF]) % 255] : 0;
+<a name="l00022"></a>00022 }
+<a name="l00023"></a>00023
+<a name="l00026"></a><a class="code" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">00026</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">Mul4</a>(<span class="keywordtype">int</span> <a class="code" href="classAES.html#a_5BMAX_5FBC_5D">a</a>, <span class="keywordtype">char</span> b[])
+<a name="l00027"></a>00027 {
+<a name="l00028"></a>00028 <span class="keywordflow">if</span>(a == 0)
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> 0;
+<a name="l00030"></a>00030 a = <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[a & 0xFF];
+<a name="l00031"></a>00031 <span class="keywordtype">int</span> a0 = (b[0] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[0] & 0xFF]) % 255] & 0xFF : 0;
+<a name="l00032"></a>00032 <span class="keywordtype">int</span> a1 = (b[1] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[1] & 0xFF]) % 255] & 0xFF : 0;
+<a name="l00033"></a>00033 <span class="keywordtype">int</span> a2 = (b[2] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[2] & 0xFF]) % 255] & 0xFF : 0;
+<a name="l00034"></a>00034 <span class="keywordtype">int</span> a3 = (b[3] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[3] & 0xFF]) % 255] & 0xFF : 0;
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> a0 << 24 | a1 << 16 | a2 << 8 | a3;
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="keyword">public</span>:
+<a name="l00039"></a>00039 <a class="code" href="classAES.html#AES_28_29">AES</a>();
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="keyword">virtual</span> <a class="code" href="classAES.html#_7EAES_28_29">~AES</a>();
+<a name="l00042"></a>00042
+<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="classAES.html#MakeKey_28char_20const_20_2Akey_2C_20char_20const_20_2Achain_2C_20int_20keylength_3DDEFAULT_5FBLOCK_5FSIZE_2C_20int_20blockSize_3DDEFAULT_5FBLOCK_5FSIZE_29">MakeKey</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* key, <span class="keywordtype">char</span> <span class="keyword">const</span>* chain, <span class="keywordtype">int</span> keylength=<a class="code" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">DEFAULT_BLOCK_SIZE</a>, <span class="keywordtype">int</span> blockSize=<a class="code" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">DEFAULT_BLOCK_SIZE</a>);
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">private</span>:
+<a name="l00055"></a><a class="code" href="classAES.html#Xor_28char_20_2Abuff_2C_20char_20const_20_2Achain_29">00055</a> <span class="keywordtype">void</span> <a class="code" href="classAES.html#Xor_28char_20_2Abuff_2C_20char_20const_20_2Achain_29">Xor</a>(<span class="keywordtype">char</span>* buff, <span class="keywordtype">char</span> <span class="keyword">const</span>* chain)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00058"></a>00058 <span class="keywordflow">return</span>;
+<a name="l00059"></a>00059 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i<<a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>; i++)
+<a name="l00060"></a>00060 *(buff++) ^= *(chain++);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="classAES.html#DefEncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">DefEncryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00068"></a>00068
+<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="classAES.html#DefDecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">DefDecryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">public</span>:
+<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="classAES.html#EncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">EncryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00081"></a>00081
+<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="classAES.html#DecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">DecryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00087"></a>00087
+<a name="l00094"></a>00094 <span class="keywordtype">void</span> <a class="code" href="classAES.html#Encrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">Encrypt</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result, size_t n, <span class="keywordtype">int</span> iMode=<a class="code" href="classAES.html#_40_30ECB">ECB</a>);
+<a name="l00095"></a>00095
+<a name="l00102"></a>00102 <span class="keywordtype">void</span> <a class="code" href="classAES.html#Decrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">Decrypt</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result, size_t n, <span class="keywordtype">int</span> iMode=<a class="code" href="classAES.html#_40_30ECB">ECB</a>);
+<a name="l00103"></a>00103
+<a name="l00106"></a><a class="code" href="classAES.html#GetKeyLength_28_29">00106</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#GetKeyLength_28_29">GetKeyLength</a>()
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00109"></a>00109 <span class="keywordflow">return</span> 0;
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> <a class="code" href="classAES.html#m_5Fkeylength">m_keylength</a>;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112
+<a name="l00115"></a><a class="code" href="classAES.html#GetBlockSize_28_29">00115</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#GetBlockSize_28_29">GetBlockSize</a>()
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00118"></a>00118 <span class="keywordflow">return</span> 0;
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> <a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>;
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121
+<a name="l00124"></a><a class="code" href="classAES.html#GetRounds_28_29">00124</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#GetRounds_28_29">GetRounds</a>()
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> 0;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> <a class="code" href="classAES.html#m_5FiROUNDS">m_iROUNDS</a>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00133"></a><a class="code" href="classAES.html#ResetChain_28_29">00133</a> <span class="keywordtype">void</span> <a class="code" href="classAES.html#ResetChain_28_29">ResetChain</a>()
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 memcpy(<a class="code" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">m_chain</a>, <a class="code" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">m_chain0</a>, <a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>);
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keyword">public</span>:
+<a name="l00141"></a><a class="code" href="classAES.html#sm_5Fchain_30">00141</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classAES.html#sm_5Fchain_30">sm_chain0</a>;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <span class="keyword">private</span>:
+<a name="l00144"></a><a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">00144</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[256];
+<a name="l00145"></a><a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">00145</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[256];
+<a name="l00146"></a><a class="code" href="classAES.html#sm_5FS_5B_32_35_36_5D">00146</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classAES.html#sm_5FS_5B_32_35_36_5D">sm_S</a>[256];
+<a name="l00147"></a><a class="code" href="classAES.html#sm_5FSi_5B_32_35_36_5D">00147</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classAES.html#sm_5FSi_5B_32_35_36_5D">sm_Si</a>[256];
+<a name="l00148"></a><a class="code" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">00148</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">sm_T1</a>[256];
+<a name="l00149"></a><a class="code" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">00149</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">sm_T2</a>[256];
+<a name="l00150"></a><a class="code" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">00150</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">sm_T3</a>[256];
+<a name="l00151"></a><a class="code" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">00151</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">sm_T4</a>[256];
+<a name="l00152"></a><a class="code" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">00152</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">sm_T5</a>[256];
+<a name="l00153"></a><a class="code" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">00153</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">sm_T6</a>[256];
+<a name="l00154"></a><a class="code" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">00154</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">sm_T7</a>[256];
+<a name="l00155"></a><a class="code" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">00155</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">sm_T8</a>[256];
+<a name="l00156"></a><a class="code" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">00156</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">sm_U1</a>[256];
+<a name="l00157"></a><a class="code" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">00157</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">sm_U2</a>[256];
+<a name="l00158"></a><a class="code" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">00158</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">sm_U3</a>[256];
+<a name="l00159"></a><a class="code" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">00159</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">sm_U4</a>[256];
+<a name="l00160"></a><a class="code" href="classAES.html#sm_5Frcon_5B_33_30_5D">00160</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classAES.html#sm_5Frcon_5B_33_30_5D">sm_rcon</a>[30];
+<a name="l00161"></a><a class="code" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">00161</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">sm_shifts</a>[3][4][2];
+<a name="l00164"></a><a class="code" href="classAES.html#m_5FbKeyInit">00164</a> <span class="keywordtype">bool</span> <a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>;
+<a name="l00167"></a><a class="code" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">00167</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">m_Ke</a>[<a class="code" href="classAES.html#_40_32MAX_5FROUNDS">MAX_ROUNDS</a>+1][<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00170"></a><a class="code" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">00170</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">m_Kd</a>[<a class="code" href="classAES.html#_40_32MAX_5FROUNDS">MAX_ROUNDS</a>+1][<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00173"></a><a class="code" href="classAES.html#m_5Fkeylength">00173</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5Fkeylength">m_keylength</a>;
+<a name="l00176"></a><a class="code" href="classAES.html#m_5FblockSize">00176</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>;
+<a name="l00179"></a><a class="code" href="classAES.html#m_5FiROUNDS">00179</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FiROUNDS">m_iROUNDS</a>;
+<a name="l00182"></a><a class="code" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">00182</a> <span class="keywordtype">char</span> <a class="code" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">m_chain0</a>[<a class="code" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">MAX_BLOCK_SIZE</a>];
+<a name="l00183"></a><a class="code" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">00183</a> <span class="keywordtype">char</span> <a class="code" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">m_chain</a>[<a class="code" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">MAX_BLOCK_SIZE</a>];
+<a name="l00186"></a><a class="code" href="classAES.html#tk_5BMAX_5FKC_5D">00186</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#tk_5BMAX_5FKC_5D">tk</a>[<a class="code" href="classAES.html#_40_32MAX_5FKC">MAX_KC</a>];
+<a name="l00187"></a><a class="code" href="classAES.html#a_5BMAX_5FBC_5D">00187</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#a_5BMAX_5FBC_5D">a</a>[<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00188"></a><a class="code" href="classAES.html#t_5BMAX_5FBC_5D">00188</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#t_5BMAX_5FBC_5D">t</a>[<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00189"></a>00189 };
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="preprocessor">#endif</span>
+<a name="l00192"></a>00192 <span class="preprocessor"></span>
+<a name="l00199"></a>00199 <span class="keywordtype">void</span> <a class="code" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">to64frombits</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> inlen);
+<a name="l00206"></a>00206 <span class="keywordtype">int</span> <a class="code" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">from64tobits</a>(<span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> maxlen);
+<a name="l00207"></a>00207
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>InspIRCd: aes.h File Reference</title>
+<link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.4-20050815 -->
+<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000004.html">include</a></div>
+<h1>aes.h File Reference</h1><code>#include <cstring></code><br>
+
+<p>
+Include dependency graph for aes.h:<p><center><img src="aes_8h__incl.gif" border="0" usemap="#aes.h_map" alt=""></center>
+
+<p>
+<a href="aes_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classAES.html">AES</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The AES class is a utility class for use in modules and the core for encryption of data. <a href="classAES.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">to64frombits</a> (unsigned char *out, const unsigned char *in, int inlen)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert from binary to base64. <a href="#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">from64tobits</a> (char *out, const char *in, int maxlen)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert from base64 to binary Output Input Size of output buffer. <a href="#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29"></a><br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29"></a><!-- doxytag: member="aes.h::from64tobits" ref="from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29" args="(char *out, const char *in, int maxlen)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int from64tobits </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">char * </td>
+ <td class="mdname" nowrap> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int </td>
+ <td class="mdname" nowrap> <em>maxlen</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Convert from base64 to binary Output Input Size of output buffer.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>Number of bytes actually converted</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29"></a><!-- doxytag: member="aes.h::to64frombits" ref="to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29" args="(unsigned char *out, const unsigned char *in, int inlen)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void to64frombits </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">unsigned char * </td>
+ <td class="mdname" nowrap> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char * </td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int </td>
+ <td class="mdname" nowrap> <em>inlen</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Convert from binary to base64.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>Output </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>Input </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inlen</em> </td><td>Number of bytes in input buffer</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
+</body>
+</html>
--- /dev/null
+base referer
--- /dev/null
+757d940097e33843502a3704b6517705
\ No newline at end of file
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindexHL" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>InspIRCd Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="classAdmin.html">Admin</a></td><td class="indexvalue">Holds /ADMIN data This class contains the admin details of the local server </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classAES.html">AES</a></td><td class="indexvalue">Utility class for use in modules and the core for encryption of data </td></tr>
<tr><td class="indexkey"><a class="el" href="classBanItem.html">BanItem</a></td><td class="indexvalue">A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to hold channel bans (+b) </td></tr>
<tr><td class="indexkey"><a class="el" href="classBoolSet.html">BoolSet</a></td><td class="indexvalue">BoolSet is a utility class designed to hold eight bools in a bitmask </td></tr>
<tr><td class="indexkey"><a class="el" href="classchanrec.html">chanrec</a></td><td class="indexvalue">Holds all relevent information for a channel </td></tr>
<tr><td class="indexkey"><a class="el" href="classstd_1_1char__traits.html">char_traits</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classclassbase.html">classbase</a></td><td class="indexvalue">The base class for all inspircd classes </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcmd__mode.html">cmd_mode</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classcommand__t.html">command_t</a></td><td class="indexvalue">A structure that defines a command </td></tr>
<tr><td class="indexkey"><a class="el" href="classConfigReader.html">ConfigReader</a></td><td class="indexvalue">Allows reading of values from configuration files This class allows a module to read from either the main configuration file (inspircd.conf) or from a module-specified configuration file </td></tr>
<tr><td class="indexkey"><a class="el" href="classConnectClass.html">ConnectClass</a></td><td class="indexvalue">Holds information relevent to <connect allow> and <connect deny> tags in the config file </td></tr>
<tr><td class="indexkey"><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td class="indexvalue">The <a class="el" href="structirc_1_1irc__char__traits.html">irc_char_traits</a> class is used for RFC-style comparison of strings </td></tr>
<tr><td class="indexkey"><a class="el" href="classKLine.html">KLine</a></td><td class="indexvalue">KLine class </td></tr>
<tr><td class="indexkey"><a class="el" href="classModeParameter.html">ModeParameter</a></td><td class="indexvalue">Holds a custom parameter to a module-defined channel mode e.g </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classModeParser.html">ModeParser</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classModule.html">Module</a></td><td class="indexvalue">Base class for all <a class="el" href="classInspIRCd.html">InspIRCd</a> modules This class is the base class for <a class="el" href="classInspIRCd.html">InspIRCd</a> modules </td></tr>
<tr><td class="indexkey"><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td class="indexvalue">Instantiates classes inherited from <a class="el" href="classModule.html">Module</a> This class creates a class inherited from type <a class="el" href="classModule.html">Module</a>, using new </td></tr>
<tr><td class="indexkey"><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td class="indexvalue">Base class of <a class="el" href="classRequest.html">Request</a> and <a class="el" href="classEvent.html">Event</a> This class is used to represent a basic data structure which is passed between modules for safe inter-module communications </td></tr>
<tr><td class="indexkey"><a class="el" href="classXLine.html">XLine</a></td><td class="indexvalue">XLine is the base class for ban lines such as G lines and K lines </td></tr>
<tr><td class="indexkey"><a class="el" href="classZLine.html">ZLine</a></td><td class="indexvalue">ZLine class </td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00161"></a>00161
<a name="l00162"></a>00162 <span class="preprocessor">#endif</span>
<a name="l00163"></a>00163 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<map name="base.hdep_map">
<area href="channels_8h-source.html" shape="rect" coords="123,7,208,33" alt="">
<area href="connection_8h-source.html" shape="rect" coords="116,57,215,84" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="128,108,203,135" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="264,133,347,160" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="124,108,207,135" alt="">
</map>
<p>
Definition at line <a class="el" href="base_8h-source.html#l00026">26</a> of file <a class="el" href="base_8h-source.html">base.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
rect $channels_8h-source.html 123,7 208,33
rect $connection_8h-source.html 116,57 215,84
-rect $ctables_8h-source.html 128,108 203,135
-rect $modules_8h-source.html 264,133 347,160
+rect $modules_8h-source.html 124,108 207,135
-b145898866c61fc2668d99f3afe53948
\ No newline at end of file
+ee5adf3802b7f876813a7157861bd8af
\ No newline at end of file
<a name="l00019"></a>00019 <span class="preprocessor">#include "inspircd_config.h"</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <unistd.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sys/errno.h></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <sys/ioctl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <sys/utsname.h></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <time.h></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <string></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#ifdef GCC3</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#else</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include <map></span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include <sstream></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include <vector></span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include <deque></span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "dynamic.h"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include "wildcard.h"</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
-<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
-<a name="l00048"></a>00048 <span class="preprocessor">#include "inspstring.h"</span>
-<a name="l00049"></a>00049 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="preprocessor">#ifdef GCC3</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00055"></a><a class="code" href="channels_8cpp.html#nspace">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00057"></a>00057 <span class="preprocessor"></span>
-<a name="l00058"></a>00058 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="channels_8cpp.html#Config">Config</a>;
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
-<a name="l00061"></a>00061 <span class="keyword">extern</span> std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>;
-<a name="l00062"></a>00062 <span class="keyword">extern</span> std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>;
-<a name="l00063"></a>00063 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
-<a name="l00064"></a>00064 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
-<a name="l00065"></a>00065 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00066"></a>00066 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
-<a name="l00069"></a>00069
-<a name="l00070"></a><a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">00070</a> std::vector<ModeParameter> <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">ForceChan</a>(<a class="code" href="classchanrec.html">chanrec</a>* Ptr,<a class="code" href="classucrec.html">ucrec</a> &a,<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">int</span> created);
-<a name="l00073"></a>00073
-<a name="l00074"></a><a class="code" href="classchanrec.html#chanrec_28_29">00074</a> <a class="code" href="classchanrec.html#chanrec_28_29">chanrec::chanrec</a>()
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
-<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
-<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
-<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
-<a name="l00080"></a>00080 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
-<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
-<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
-<a name="l00083"></a>00083 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a><a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">00086</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">chanrec::SetCustomMode</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">bool</span> mode_on)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (mode_on) {
-<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
-<a name="l00090"></a>00090 m[0] = mode;
-<a name="l00091"></a>00091 m[1] = <span class="charliteral">'\0'</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!strchr(this->custom_modes,mode))
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> {
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-><a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
-<a name="l00101"></a>00101 <span class="keywordtype">int</span> pos = a.find(mode);
-<a name="l00102"></a>00102 a.erase(pos,1);
-<a name="l00103"></a>00103 strncpy(this->custom_modes,a.c_str(),MAXMODES);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this->custom_modes);
-<a name="l00106"></a>00106 this-><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 }
+<a name="l00022"></a>00022 <span class="preprocessor">#include <unistd.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <sys/errno.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <sys/ioctl.h></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <sys/utsname.h></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <time.h></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <string></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef GCC3</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#else</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include <map></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include <sstream></span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include <vector></span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include <deque></span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "dynamic.h"</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "wildcard.h"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "inspstring.h"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "helperfuncs.h"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="preprocessor">#ifdef GCC3</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00054"></a><a class="code" href="channels_8cpp.html#nspace">00054</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00057"></a>00057 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="channels_8cpp.html#Config">Config</a>;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
+<a name="l00060"></a>00060 <span class="keyword">extern</span> std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>;
+<a name="l00061"></a>00061 <span class="keyword">extern</span> std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>;
+<a name="l00062"></a>00062 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
+<a name="l00063"></a>00063 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
+<a name="l00064"></a>00064 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00065"></a>00065 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
+<a name="l00068"></a>00068
+<a name="l00069"></a><a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">00069</a> std::vector<ModeParameter> <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>;
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">ForceChan</a>(<a class="code" href="classchanrec.html">chanrec</a>* Ptr,<a class="code" href="classucrec.html">ucrec</a> &a,<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">int</span> created);
+<a name="l00072"></a>00072
+<a name="l00073"></a><a class="code" href="classchanrec.html#chanrec_28_29">00073</a> <a class="code" href="classchanrec.html#chanrec_28_29">chanrec::chanrec</a>()
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
+<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
+<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
+<a name="l00080"></a>00080 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
+<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084
+<a name="l00085"></a><a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">00085</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">chanrec::SetCustomMode</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">bool</span> mode_on)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (mode_on) {
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
+<a name="l00089"></a>00089 m[0] = mode;
+<a name="l00090"></a>00090 m[1] = <span class="charliteral">'\0'</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (!strchr(this->custom_modes,mode))
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keywordflow">else</span> {
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-><a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> pos = a.find(mode);
+<a name="l00101"></a>00101 a.erase(pos,1);
+<a name="l00102"></a>00102 strncpy(this->custom_modes,a.c_str(),MAXMODES);
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this->custom_modes);
+<a name="l00105"></a>00105 this-><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108
<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00111"></a><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">00111</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">chanrec::SetCustomModeParam</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">char</span>* parameter,<span class="keywordtype">bool</span> mode_on)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
-<a name="l00115"></a>00115 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
-<a name="l00116"></a>00116 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
-<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this->name,CHANMAX);
-<a name="l00118"></a>00118 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (mode_on)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
-<a name="l00122"></a>00122 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 <span class="keywordflow">else</span>
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
-<a name="l00133"></a>00133 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
-<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141
-<a name="l00142"></a><a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">00142</a> <span class="keywordtype">bool</span> <a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec::IsCustomModeSet</a>(<span class="keywordtype">char</span> mode)
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> (strchr(this->custom_modes,mode));
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a><a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">00147</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec::GetModeParameter</a>(<span class="keywordtype">char</span> mode)
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> i->parameter;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00162"></a><a class="code" href="classchanrec.html#GetUserCounter_28_29">00162</a> <span class="keywordtype">long</span> <a class="code" href="classchanrec.html#GetUserCounter_28_29">chanrec::GetUserCounter</a>()
-<a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> (this->internal_userlist.size());
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a><a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">00167</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">chanrec::AddUser</a>(<span class="keywordtype">char</span>* castuser)
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
-<a name="l00170"></a>00170 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a><a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">00173</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">chanrec::DelUser</a>(<span class="keywordtype">char</span>* castuser)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keywordflow">for</span> (std::vector<char*>::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a < <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (*a == castuser)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
-<a name="l00180"></a>00180 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
-<a name="l00181"></a>00181 <span class="keywordflow">return</span>;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a><a class="code" href="classchanrec.html#GetUsers_28_29">00187</a> std::vector<char*> *<a class="code" href="classchanrec.html#GetUsers_28_29">chanrec::GetUsers</a>()
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> &<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="comment">/* add a channel to a user, creating the record for it if needed and linking</span>
-<a name="l00193"></a>00193 <span class="comment"> * it to the user record */</span>
-<a name="l00194"></a>00194
-<a name="l00195"></a><a class="code" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">00195</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(<a class="code" href="classuserrec.html">userrec</a> *user, <span class="keyword">const</span> <span class="keywordtype">char</span>* cn, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keywordtype">bool</span> override)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> ((!user) || (!cn))
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> created = 0;
-<a name="l00204"></a>00204 <span class="keywordtype">char</span> cname[MAXBUF];
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> MOD_RESULT = 0;
-<a name="l00206"></a>00206 strncpy(cname,cn,CHANMAX);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!Ptr)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 MOD_RESULT = 0;
-<a name="l00217"></a>00217 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> NULL;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 <span class="comment">/* create a new one */</span>
-<a name="l00222"></a>00222 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
-<a name="l00223"></a>00223 strlcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->name, cname,CHANMAX);
-<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
-<a name="l00225"></a>00225 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00226"></a>00226 strcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topic, <span class="stringliteral">""</span>);
-<a name="l00227"></a>00227 strncpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->setby, user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
-<a name="l00228"></a>00228 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topicset = 0;
-<a name="l00229"></a>00229 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
-<a name="l00230"></a>00230 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
-<a name="l00231"></a>00231 <span class="comment">/* set created to 2 to indicate user</span>
-<a name="l00232"></a>00232 <span class="comment"> * is the first in the channel</span>
-<a name="l00233"></a>00233 <span class="comment"> * and should be given ops */</span>
-<a name="l00234"></a>00234 created = 2;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">else</span>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="comment">/* Already on the channel */</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// remote users are allowed us to bypass channel modes</span>
-<a name="l00243"></a>00243 <span class="comment">// and bans (used by servers)</span>
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 MOD_RESULT = 0;
-<a name="l00247"></a>00247 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> NULL;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">else</span>
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (*Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 MOD_RESULT = 0;
-<a name="l00257"></a>00257 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!MOD_RESULT)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!key)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
-<a name="l00263"></a>00263 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> NULL;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
-<a name="l00271"></a>00271 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#binarymodes">binarymodes</a> & <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 MOD_RESULT = 0;
+<a name="l00110"></a><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">00110</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">chanrec::SetCustomModeParam</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">char</span>* parameter,<span class="keywordtype">bool</span> mode_on)
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
+<a name="l00114"></a>00114 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
+<a name="l00115"></a>00115 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
+<a name="l00116"></a>00116 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this->name,CHANMAX);
+<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (mode_on)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
+<a name="l00121"></a>00121 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 <span class="keywordflow">else</span>
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
+<a name="l00132"></a>00132 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a><a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">00141</a> <span class="keywordtype">bool</span> <a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec::IsCustomModeSet</a>(<span class="keywordtype">char</span> mode)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keywordflow">return</span> (strchr(this->custom_modes,mode));
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">00146</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec::GetModeParameter</a>(<span class="keywordtype">char</span> mode)
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 <span class="keywordflow">return</span> i->parameter;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160
+<a name="l00161"></a><a class="code" href="classchanrec.html#GetUserCounter_28_29">00161</a> <span class="keywordtype">long</span> <a class="code" href="classchanrec.html#GetUserCounter_28_29">chanrec::GetUserCounter</a>()
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> (this->internal_userlist.size());
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165
+<a name="l00166"></a><a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">00166</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">chanrec::AddUser</a>(<span class="keywordtype">char</span>* castuser)
+<a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
+<a name="l00169"></a>00169 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171
+<a name="l00172"></a><a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">00172</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">chanrec::DelUser</a>(<span class="keywordtype">char</span>* castuser)
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keywordflow">for</span> (std::vector<char*>::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a < <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (*a == castuser)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
+<a name="l00179"></a>00179 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
+<a name="l00180"></a>00180 <span class="keywordflow">return</span>;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185
+<a name="l00186"></a><a class="code" href="classchanrec.html#GetUsers_28_29">00186</a> std::vector<char*> *<a class="code" href="classchanrec.html#GetUsers_28_29">chanrec::GetUsers</a>()
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keywordflow">return</span> &<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="comment">/* add a channel to a user, creating the record for it if needed and linking</span>
+<a name="l00192"></a>00192 <span class="comment"> * it to the user record */</span>
+<a name="l00193"></a>00193
+<a name="l00194"></a><a class="code" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">00194</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(<a class="code" href="classuserrec.html">userrec</a> *user, <span class="keyword">const</span> <span class="keywordtype">char</span>* cn, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keywordtype">bool</span> override)
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> ((!user) || (!cn))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keywordtype">int</span> created = 0;
+<a name="l00203"></a>00203 <span class="keywordtype">char</span> cname[MAXBUF];
+<a name="l00204"></a>00204 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00205"></a>00205 strncpy(cname,cn,CHANMAX);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (!Ptr)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 MOD_RESULT = 0;
+<a name="l00216"></a>00216 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> NULL;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="comment">/* create a new one */</span>
+<a name="l00221"></a>00221 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
+<a name="l00222"></a>00222 strlcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->name, cname,CHANMAX);
+<a name="l00223"></a>00223 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
+<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00225"></a>00225 strcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topic, <span class="stringliteral">""</span>);
+<a name="l00226"></a>00226 strncpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->setby, user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00227"></a>00227 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topicset = 0;
+<a name="l00228"></a>00228 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
+<a name="l00229"></a>00229 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
+<a name="l00230"></a>00230 <span class="comment">/* set created to 2 to indicate user</span>
+<a name="l00231"></a>00231 <span class="comment"> * is the first in the channel</span>
+<a name="l00232"></a>00232 <span class="comment"> * and should be given ops */</span>
+<a name="l00233"></a>00233 created = 2;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">else</span>
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 <span class="comment">/* Already on the channel */</span>
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> NULL;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// remote users are allowed us to bypass channel modes</span>
+<a name="l00242"></a>00242 <span class="comment">// and bans (used by servers)</span>
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 MOD_RESULT = 0;
+<a name="l00246"></a>00246 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> NULL;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 <span class="keywordflow">else</span>
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (*Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 MOD_RESULT = 0;
+<a name="l00256"></a>00256 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!MOD_RESULT)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!key)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
+<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="keywordflow">else</span>
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
+<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#binarymodes">binarymodes</a> & <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 MOD_RESULT = 0;
+<a name="l00279"></a>00279 <a class="code" href="namespaceirc.html#string">irc::string</a> xname(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
<a name="l00280"></a>00280 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckInvite(user, Ptr));
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!MOD_RESULT)
<a name="l00282"></a>00282 {
<a name="l00283"></a>00283 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: channel is +i"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-><a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>))
+<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-><a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(xname))
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="comment">/* user was invited to channel */</span>
<a name="l00287"></a>00287 <span class="comment">/* there may be an optional channel NOTICE here */</span>
<a name="l00292"></a>00292 <span class="keywordflow">return</span> NULL;
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 user-><a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00295"></a>00295 user-><a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(xname);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#limit">limit</a>)
<a name="l00298"></a>00298 {
<a name="l00543"></a>00543 }
<a name="l00544"></a>00544
<a name="l00545"></a>00545
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<h1>channels.cpp File Reference</h1><code>#include "inspircd_config.h"</code><br>
<code>#include "<a class="el" href="inspircd_8h-source.html">inspircd.h</a>"</code><br>
<code>#include "<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>"</code><br>
-<code>#include "inspircd_util.h"</code><br>
<code>#include <unistd.h></code><br>
<code>#include <sys/errno.h></code><br>
<code>#include <sys/ioctl.h></code><br>
<p>
Include dependency graph for channels.cpp:<p><center><img src="channels_8cpp__incl.gif" border="0" usemap="#channels.cpp_map" alt=""></center>
<map name="channels.cpp_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="580,665,660,692" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="712,615,808,641" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="872,767,947,793" alt="">
-<area href="users_8h-source.html" shape="rect" coords="1009,716,1073,743" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="452,868,527,895" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="315,767,397,793" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="860,361,959,388" alt="">
-<area href="message_8h-source.html" shape="rect" coords="867,412,952,439" alt="">
-<area href="mode_8h-source.html" shape="rect" coords="876,108,943,135" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="879,159,940,185" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="168,1020,253,1047" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="313,817,393,844" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="443,919,539,945" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="600,615,675,641" alt="">
+<area href="users_8h-source.html" shape="rect" coords="745,817,809,844" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="596,437,679,464" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="740,412,815,439" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="604,919,671,945" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="588,1223,687,1249" alt="">
+<area href="message_8h-source.html" shape="rect" coords="595,1273,680,1300" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="607,1172,668,1199" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="168,463,253,489" alt="">
</map>
<p>
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00055">55</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>. </td>
+Definition at line <a class="el" href="channels_8cpp-source.html#l00054">54</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00195">195</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00072">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00096">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00147">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> ((!user) || (!cn))
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> created = 0;
-<a name="l00204"></a>00204 <span class="keywordtype">char</span> cname[MAXBUF];
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> MOD_RESULT = 0;
-<a name="l00206"></a>00206 strncpy(cname,cn,CHANMAX);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!Ptr)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 MOD_RESULT = 0;
-<a name="l00217"></a>00217 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> NULL;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 <span class="comment">/* create a new one */</span>
-<a name="l00222"></a>00222 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
-<a name="l00223"></a>00223 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
-<a name="l00225"></a>00225 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00226"></a>00226 strcpy(chanlist[cname]->topic, <span class="stringliteral">""</span>);
-<a name="l00227"></a>00227 strncpy(chanlist[cname]->setby, user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
-<a name="l00228"></a>00228 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topicset = 0;
-<a name="l00229"></a>00229 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
-<a name="l00230"></a>00230 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
-<a name="l00231"></a>00231 <span class="comment">/* set created to 2 to indicate user</span>
-<a name="l00232"></a>00232 <span class="comment"> * is the first in the channel</span>
-<a name="l00233"></a>00233 <span class="comment"> * and should be given ops */</span>
-<a name="l00234"></a>00234 created = 2;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">else</span>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="comment">/* Already on the channel */</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// remote users are allowed us to bypass channel modes</span>
-<a name="l00243"></a>00243 <span class="comment">// and bans (used by servers)</span>
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 MOD_RESULT = 0;
-<a name="l00247"></a>00247 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> NULL;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">else</span>
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (*Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 MOD_RESULT = 0;
-<a name="l00257"></a>00257 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!MOD_RESULT)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!key)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
-<a name="l00263"></a>00263 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> NULL;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
-<a name="l00271"></a>00271 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#binarymodes">binarymodes</a> & <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 MOD_RESULT = 0;
+Definition at line <a class="el" href="channels_8cpp-source.html#l00194">194</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00099">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00123">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00151">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00363">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> ((!user) || (!cn))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keywordtype">int</span> created = 0;
+<a name="l00203"></a>00203 <span class="keywordtype">char</span> cname[MAXBUF];
+<a name="l00204"></a>00204 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00205"></a>00205 strncpy(cname,cn,CHANMAX);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (!Ptr)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 MOD_RESULT = 0;
+<a name="l00216"></a>00216 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> NULL;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="comment">/* create a new one */</span>
+<a name="l00221"></a>00221 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
+<a name="l00222"></a>00222 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+<a name="l00223"></a>00223 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
+<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00225"></a>00225 strcpy(chanlist[cname]->topic, <span class="stringliteral">""</span>);
+<a name="l00226"></a>00226 strncpy(chanlist[cname]->setby, user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00227"></a>00227 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topicset = 0;
+<a name="l00228"></a>00228 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
+<a name="l00229"></a>00229 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
+<a name="l00230"></a>00230 <span class="comment">/* set created to 2 to indicate user</span>
+<a name="l00231"></a>00231 <span class="comment"> * is the first in the channel</span>
+<a name="l00232"></a>00232 <span class="comment"> * and should be given ops */</span>
+<a name="l00233"></a>00233 created = 2;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">else</span>
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 <span class="comment">/* Already on the channel */</span>
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> NULL;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// remote users are allowed us to bypass channel modes</span>
+<a name="l00242"></a>00242 <span class="comment">// and bans (used by servers)</span>
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 MOD_RESULT = 0;
+<a name="l00246"></a>00246 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> NULL;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 <span class="keywordflow">else</span>
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (*Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 MOD_RESULT = 0;
+<a name="l00256"></a>00256 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!MOD_RESULT)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!key)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
+<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="keywordflow">else</span>
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
+<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#binarymodes">binarymodes</a> & <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 MOD_RESULT = 0;
+<a name="l00279"></a>00279 <a class="code" href="namespaceirc.html#string">irc::string</a> xname(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
<a name="l00280"></a>00280 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckInvite(user, Ptr));
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!MOD_RESULT)
<a name="l00282"></a>00282 {
<a name="l00283"></a>00283 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: channel is +i"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-><a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>))
+<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-><a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(xname))
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="comment">/* user was invited to channel */</span>
<a name="l00287"></a>00287 <span class="comment">/* there may be an optional channel NOTICE here */</span>
<a name="l00292"></a>00292 <span class="keywordflow">return</span> NULL;
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 user-><a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00295"></a>00295 user-><a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(xname);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#limit">limit</a>)
<a name="l00298"></a>00298 {
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00401">401</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
+References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00369">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
+Referenced by <a class="el" href="modules_8cpp-source.html#l00368">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
<a name="l00403"></a>00403 <span class="keywordflow">if</span> ((!user) || (!cname))
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** del_channel was given an invalid parameter"</span>);
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00372">372</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp-source.html#l00167">chanrec::AddUser()</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, <a class="el" href="channels_8h-source.html#l00232">UCMODE_OP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+References <a class="el" href="channels_8cpp-source.html#l00166">chanrec::AddUser()</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, <a class="el" href="channels_8h-source.html#l00232">UCMODE_OP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00373"></a>00373 {
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00373"></a>00373 {
<a name="l00374"></a>00374 <span class="keywordflow">if</span> (created == 2)
<a name="l00375"></a>00375 {
<a name="l00376"></a>00376 <span class="comment">/* first user in is given ops */</span>
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00459">459</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00153">userrec::server</a>, <a class="el" href="users_8h-source.html#l00030">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
+References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00032">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
<a name="l00461"></a>00461 <span class="keywordflow">if</span> ((!src) || (!user) || (!Ptr) || (!reason))
<a name="l00462"></a>00462 {
<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** kick_channel was given an invalid parameter"</span>);
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="Config"></a><!-- doxytag: member="channels.cpp::Config" ref="Config" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00070">70</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+Definition at line <a class="el" href="channels_8cpp-source.html#l00069">69</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00147">chanrec::GetModeParameter()</a>, and <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00146">chanrec::GetModeParameter()</a>, and <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<a class="anchor" name="factory"></a><!-- doxytag: member="channels.cpp::factory" ref="factory" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00935">935</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00934">934</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindModule()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00723">Server::FindModule()</a>. </td>
</tr>
</table>
<a class="anchor" name="modules"></a><!-- doxytag: member="channels.cpp::modules" ref="modules" args="" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindModule()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00723">Server::FindModule()</a>. </td>
</tr>
</table>
<a class="anchor" name="TIME"></a><!-- doxytag: member="channels.cpp::TIME" ref="TIME" args="" --><p>
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="WHOWAS_5FMAX"></a><!-- doxytag: member="channels.cpp::WHOWAS_MAX" ref="WHOWAS_5FMAX" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a> </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a> </td>
</tr>
</table>
</td>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="WHOWAS_5FSTALE"></a><!-- doxytag: member="channels.cpp::WHOWAS_STALE" ref="WHOWAS_5FSTALE" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a> </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a> </td>
</tr>
</table>
</td>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $inspircd_8h-source.html 580,665 660,692
-rect $inspircd__io_8h-source.html 712,615 808,641
-rect $globals_8h-source.html 872,767 947,793
-rect $users_8h-source.html 1009,716 1073,743
-rect $ctables_8h-source.html 452,868 527,895
-rect $modules_8h-source.html 315,767 397,793
-rect $commands_8h-source.html 860,361 959,388
-rect $message_8h-source.html 867,412 952,439
-rect $mode_8h-source.html 876,108 943,135
-rect $xline_8h-source.html 879,159 940,185
-rect $typedefs_8h-source.html 168,1020 253,1047
+rect $inspircd_8h-source.html 313,817 393,844
+rect $inspircd__io_8h-source.html 443,919 539,945
+rect $globals_8h-source.html 600,615 675,641
+rect $users_8h-source.html 745,817 809,844
+rect $modules_8h-source.html 596,437 679,464
+rect $ctables_8h-source.html 740,412 815,439
+rect $mode_8h-source.html 604,919 671,945
+rect $commands_8h-source.html 588,1223 687,1249
+rect $message_8h-source.html 595,1273 680,1300
+rect $xline_8h-source.html 607,1172 668,1199
+rect $typedefs_8h-source.html 168,463 253,489
-4f90f86ea2d42fe100213ae570a3e482
\ No newline at end of file
+693bc7a6b868d635e208e839a3f75bab
\ No newline at end of file
<a name="l00263"></a>00263
<a name="l00264"></a>00264 <span class="preprocessor">#endif</span>
<a name="l00265"></a>00265 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="channels_8h__dep__incl.gif" border="0" usemap="#channels.hdep_map" alt=""></center>
<map name="channels.hdep_map">
-<area href="users_8cpp-source.html" shape="rect" coords="407,83,487,109" alt="">
-<area href="users_8h-source.html" shape="rect" coords="144,260,208,287" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="257,57,356,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="665,311,745,337" alt="">
+<area href="users_8h-source.html" shape="rect" coords="144,285,208,312" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="257,108,356,135" alt="">
+<area href="cull__list_8h-source.html" shape="rect" coords="268,159,345,185" alt="">
<area href="globals_8h-source.html" shape="rect" coords="269,209,344,236" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="404,235,489,261" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="267,108,347,135" alt="">
-<area href="cull__list_8h-source.html" shape="rect" coords="268,311,345,337" alt="">
-<area href="message_8h-source.html" shape="rect" coords="264,361,349,388" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="532,260,617,287" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="404,361,484,388" alt="">
<area href="mode_8h-source.html" shape="rect" coords="273,412,340,439" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="276,463,337,489" alt="">
+<area href="message_8h-source.html" shape="rect" coords="264,463,349,489" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="276,513,337,540" alt="">
</map>
<p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00028">28</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="CM_5FMODERATED"></a><!-- doxytag: member="channels.h::CM_MODERATED" ref="CM_5FMODERATED" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00027">27</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="CM_5FPRIVATE"></a><!-- doxytag: member="channels.h::CM_PRIVATE" ref="CM_5FPRIVATE" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00026">26</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="UCMODE_5FFOUNDER"></a><!-- doxytag: member="channels.h::UCMODE_FOUNDER" ref="UCMODE_5FFOUNDER" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00195">195</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00072">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00096">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00147">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> ((!user) || (!cn))
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> created = 0;
-<a name="l00204"></a>00204 <span class="keywordtype">char</span> cname[MAXBUF];
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> MOD_RESULT = 0;
-<a name="l00206"></a>00206 strncpy(cname,cn,CHANMAX);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!Ptr)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 MOD_RESULT = 0;
-<a name="l00217"></a>00217 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> NULL;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 <span class="comment">/* create a new one */</span>
-<a name="l00222"></a>00222 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
-<a name="l00223"></a>00223 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
-<a name="l00225"></a>00225 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00226"></a>00226 strcpy(chanlist[cname]->topic, <span class="stringliteral">""</span>);
-<a name="l00227"></a>00227 strncpy(chanlist[cname]->setby, user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
-<a name="l00228"></a>00228 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topicset = 0;
-<a name="l00229"></a>00229 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
-<a name="l00230"></a>00230 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
-<a name="l00231"></a>00231 <span class="comment">/* set created to 2 to indicate user</span>
-<a name="l00232"></a>00232 <span class="comment"> * is the first in the channel</span>
-<a name="l00233"></a>00233 <span class="comment"> * and should be given ops */</span>
-<a name="l00234"></a>00234 created = 2;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">else</span>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="comment">/* Already on the channel */</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// remote users are allowed us to bypass channel modes</span>
-<a name="l00243"></a>00243 <span class="comment">// and bans (used by servers)</span>
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 MOD_RESULT = 0;
-<a name="l00247"></a>00247 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> NULL;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">else</span>
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (*Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 MOD_RESULT = 0;
-<a name="l00257"></a>00257 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!MOD_RESULT)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!key)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
-<a name="l00263"></a>00263 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> NULL;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
-<a name="l00271"></a>00271 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#binarymodes">binarymodes</a> & <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 MOD_RESULT = 0;
+Definition at line <a class="el" href="channels_8cpp-source.html#l00194">194</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00099">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00123">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00151">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00363">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> ((!user) || (!cn))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keywordtype">int</span> created = 0;
+<a name="l00203"></a>00203 <span class="keywordtype">char</span> cname[MAXBUF];
+<a name="l00204"></a>00204 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00205"></a>00205 strncpy(cname,cn,CHANMAX);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (!Ptr)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 MOD_RESULT = 0;
+<a name="l00216"></a>00216 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> NULL;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="comment">/* create a new one */</span>
+<a name="l00221"></a>00221 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
+<a name="l00222"></a>00222 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+<a name="l00223"></a>00223 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
+<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00225"></a>00225 strcpy(chanlist[cname]->topic, <span class="stringliteral">""</span>);
+<a name="l00226"></a>00226 strncpy(chanlist[cname]->setby, user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00227"></a>00227 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]->topicset = 0;
+<a name="l00228"></a>00228 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
+<a name="l00229"></a>00229 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
+<a name="l00230"></a>00230 <span class="comment">/* set created to 2 to indicate user</span>
+<a name="l00231"></a>00231 <span class="comment"> * is the first in the channel</span>
+<a name="l00232"></a>00232 <span class="comment"> * and should be given ops */</span>
+<a name="l00233"></a>00233 created = 2;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">else</span>
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 <span class="comment">/* Already on the channel */</span>
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> NULL;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// remote users are allowed us to bypass channel modes</span>
+<a name="l00242"></a>00242 <span class="comment">// and bans (used by servers)</span>
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 MOD_RESULT = 0;
+<a name="l00246"></a>00246 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> NULL;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 <span class="keywordflow">else</span>
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (*Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 MOD_RESULT = 0;
+<a name="l00256"></a>00256 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!MOD_RESULT)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!key)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
+<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="keywordflow">else</span>
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-><a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
+<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#binarymodes">binarymodes</a> & <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 MOD_RESULT = 0;
+<a name="l00279"></a>00279 <a class="code" href="namespaceirc.html#string">irc::string</a> xname(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
<a name="l00280"></a>00280 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckInvite(user, Ptr));
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!MOD_RESULT)
<a name="l00282"></a>00282 {
<a name="l00283"></a>00283 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: channel is +i"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-><a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>))
+<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-><a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(xname))
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="comment">/* user was invited to channel */</span>
<a name="l00287"></a>00287 <span class="comment">/* there may be an optional channel NOTICE here */</span>
<a name="l00292"></a>00292 <span class="keywordflow">return</span> NULL;
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 user-><a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00295"></a>00295 user-><a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(xname);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#limit">limit</a>)
<a name="l00298"></a>00298 {
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00401">401</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
+References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00369">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
+Referenced by <a class="el" href="modules_8cpp-source.html#l00368">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
<a name="l00403"></a>00403 <span class="keywordflow">if</span> ((!user) || (!cname))
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** del_channel was given an invalid parameter"</span>);
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00459">459</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00153">userrec::server</a>, <a class="el" href="users_8h-source.html#l00030">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
+References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00032">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
<a name="l00461"></a>00461 <span class="keywordflow">if</span> ((!src) || (!user) || (!Ptr) || (!reason))
<a name="l00462"></a>00462 {
<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** kick_channel was given an invalid parameter"</span>);
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $users_8cpp-source.html 407,83 487,109
-rect $users_8h-source.html 144,260 208,287
-rect $commands_8h-source.html 257,57 356,84
+rect $users_8cpp-source.html 665,311 745,337
+rect $users_8h-source.html 144,285 208,312
+rect $commands_8h-source.html 257,108 356,135
+rect $cull__list_8h-source.html 268,159 345,185
rect $globals_8h-source.html 269,209 344,236
-rect $typedefs_8h-source.html 404,235 489,261
-rect $inspircd_8h-source.html 267,108 347,135
-rect $cull__list_8h-source.html 268,311 345,337
-rect $message_8h-source.html 264,361 349,388
+rect $typedefs_8h-source.html 532,260 617,287
+rect $inspircd_8h-source.html 404,361 484,388
rect $mode_8h-source.html 273,412 340,439
-rect $xline_8h-source.html 276,463 337,489
+rect $message_8h-source.html 264,463 349,489
+rect $xline_8h-source.html 276,513 337,540
-de274c87a015c43131b3ccf72e93a260
\ No newline at end of file
+0f9059d2ac5956aa247c0791f634c13e
\ No newline at end of file
<tr class="memlist"><td><a class="el" href="classAdmin.html#Name">Name</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classAdmin.html#Nick">Nick</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00125">125</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00143">143</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29"></a><!-- doxytag: member="Admin::Admin" ref="Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29" args="(std::string name, std::string email, std::string nick)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00163">163</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00163"></a>00163 : <a class="code" href="classAdmin.html#Name">Name</a>(name), <a class="code" href="classAdmin.html#Email">Email</a>(email), <a class="code" href="classAdmin.html#Nick">Nick</a>(nick) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00162">162</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00162"></a>00162 : <a class="code" href="classAdmin.html#Name">Name</a>(name), <a class="code" href="classAdmin.html#Email">Email</a>(email), <a class="code" href="classAdmin.html#Nick">Nick</a>(nick) { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00146">146</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Name"></a><!-- doxytag: member="Admin::Name" ref="Name" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00146">146</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Nick"></a><!-- doxytag: member="Admin::Nick" ref="Nick" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00146">146</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00054">54</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classBoolSet.html#operator_7C_28BoolSet_20other_29">operator|</a>(BoolSet other)</td><td><a class="el" href="classBoolSet.html">BoolSet</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolSet.html#Set_28int_20number_29">Set</a>(int number)</td><td><a class="el" href="classBoolSet.html">BoolSet</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolSet.html#Unset_28int_20number_29">Unset</a>(int number)</td><td><a class="el" href="classBoolSet.html">BoolSet</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classConfigReader.html#Verify_28_29">Verify</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classConfigReader.html#_7EConfigReader_28_29">~ConfigReader</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01532">1532</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01550">1550</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="ConfigReader_28_29"></a><!-- doxytag: member="ConfigReader::ConfigReader" ref="ConfigReader_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00736">736</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00735">735</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01523">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, <a class="el" href="modules_8h-source.html#l01541">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01544">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00737"></a>00737 {
-<a name="l00738"></a>00738 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00739"></a>00739 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00740"></a>00740 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00741"></a>00741 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this->cache,this->errorlog);
-<a name="l00742"></a>00742 <span class="keywordflow">if</span> (!this->readerror)
-<a name="l00743"></a>00743 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
-<a name="l00744"></a>00744 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01541">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, <a class="el" href="modules_8h-source.html#l01559">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01562">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00736"></a>00736 {
+<a name="l00737"></a>00737 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00738"></a>00738 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00739"></a>00739 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00740"></a>00740 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this->cache,this->errorlog);
+<a name="l00741"></a>00741 <span class="keywordflow">if</span> (!this->readerror)
+<a name="l00742"></a>00742 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
+<a name="l00743"></a>00743 }
</pre></div>
<p>
</td>
<p>
This constructor initialises the ConfigReader class to read a user-specified config file
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00756">756</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00755">755</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01523">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, <a class="el" href="modules_8h-source.html#l01541">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01544">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00759"></a>00759 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00760"></a>00760 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00761"></a>00761 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(filename.c_str(),this-><a class="code" href="classConfigReader.html#cache">cache</a>,this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>);
-<a name="l00762"></a>00762 <span class="keywordflow">if</span> (!this->readerror)
-<a name="l00763"></a>00763 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
-<a name="l00764"></a>00764 };
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01541">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, <a class="el" href="modules_8h-source.html#l01559">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01562">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00756"></a>00756 {
+<a name="l00757"></a>00757 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00758"></a>00758 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00759"></a>00759 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00760"></a>00760 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(filename.c_str(),this-><a class="code" href="classConfigReader.html#cache">cache</a>,this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>);
+<a name="l00761"></a>00761 <span class="keywordflow">if</span> (!this->readerror)
+<a name="l00762"></a>00762 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
+<a name="l00763"></a>00763 };
</pre></div>
<p>
</td>
<p>
This method destroys the ConfigReader class.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00747">747</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00746">746</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, and <a class="el" href="modules_8h-source.html#l01541">errorlog</a>.<div class="fragment"><pre class="fragment"><a name="l00748"></a>00748 {
-<a name="l00749"></a>00749 <span class="keywordflow">if</span> (this->cache)
-<a name="l00750"></a>00750 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#cache">cache</a>;
-<a name="l00751"></a>00751 <span class="keywordflow">if</span> (this->errorlog)
-<a name="l00752"></a>00752 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
-<a name="l00753"></a>00753 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, and <a class="el" href="modules_8h-source.html#l01559">errorlog</a>.<div class="fragment"><pre class="fragment"><a name="l00747"></a>00747 {
+<a name="l00748"></a>00748 <span class="keywordflow">if</span> (this->cache)
+<a name="l00749"></a>00749 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#cache">cache</a>;
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (this->errorlog)
+<a name="l00751"></a>00751 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
+<a name="l00752"></a>00752 }
</pre></div>
<p>
</td>
<p>
If bail is true, then the program will abort. If bail is false and user points to a valid user record, the error report will be spooled to the given user by means of NOTICE. if bool is false AND user is false, the error report will be spooled to all opers by means of a NOTICE to all opers.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00835">835</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01541">errorlog</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00836"></a>00836 {
-<a name="l00837"></a>00837 <span class="keywordflow">if</span> (bail)
-<a name="l00838"></a>00838 {
-<a name="l00839"></a>00839 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->str().c_str());
-<a name="l00840"></a>00840 exit(0);
-<a name="l00841"></a>00841 }
-<a name="l00842"></a>00842 <span class="keywordflow">else</span>
-<a name="l00843"></a>00843 {
-<a name="l00844"></a>00844 <span class="keywordtype">char</span> dataline[1024];
-<a name="l00845"></a>00845 <span class="keywordflow">if</span> (user)
-<a name="l00846"></a>00846 {
-<a name="l00847"></a>00847 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00848"></a>00848 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
-<a name="l00849"></a>00849 {
-<a name="l00850"></a>00850 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
-<a name="l00851"></a>00851 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,dataline);
-<a name="l00852"></a>00852 }
-<a name="l00853"></a>00853 }
-<a name="l00854"></a>00854 <span class="keywordflow">else</span>
-<a name="l00855"></a>00855 {
-<a name="l00856"></a>00856 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00857"></a>00857 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
-<a name="l00858"></a>00858 {
-<a name="l00859"></a>00859 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
-<a name="l00860"></a>00860 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
-<a name="l00861"></a>00861 }
-<a name="l00862"></a>00862 }
-<a name="l00863"></a>00863 <span class="keywordflow">return</span>;
-<a name="l00864"></a>00864 }
-<a name="l00865"></a>00865 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00834">834</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01559">errorlog</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00835"></a>00835 {
+<a name="l00836"></a>00836 <span class="keywordflow">if</span> (bail)
+<a name="l00837"></a>00837 {
+<a name="l00838"></a>00838 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->str().c_str());
+<a name="l00839"></a>00839 exit(0);
+<a name="l00840"></a>00840 }
+<a name="l00841"></a>00841 <span class="keywordflow">else</span>
+<a name="l00842"></a>00842 {
+<a name="l00843"></a>00843 <span class="keywordtype">char</span> dataline[1024];
+<a name="l00844"></a>00844 <span class="keywordflow">if</span> (user)
+<a name="l00845"></a>00845 {
+<a name="l00846"></a>00846 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00847"></a>00847 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
+<a name="l00848"></a>00848 {
+<a name="l00849"></a>00849 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
+<a name="l00850"></a>00850 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,dataline);
+<a name="l00851"></a>00851 }
+<a name="l00852"></a>00852 }
+<a name="l00853"></a>00853 <span class="keywordflow">else</span>
+<a name="l00854"></a>00854 {
+<a name="l00855"></a>00855 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00856"></a>00856 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
+<a name="l00857"></a>00857 {
+<a name="l00858"></a>00858 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
+<a name="l00859"></a>00859 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
+<a name="l00860"></a>00860 }
+<a name="l00861"></a>00861 }
+<a name="l00862"></a>00862 <span class="keywordflow">return</span>;
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864 }
</pre></div>
<p>
</td>
<p>
This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of <a class="el" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadValue</a> to loop through all copies of a multiple instance tag.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00868">868</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00867">867</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, and <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig::EnumConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00869"></a>00869 {
-<a name="l00870"></a>00870 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
-<a name="l00871"></a>00871 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, and <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig::EnumConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00868"></a>00868 {
+<a name="l00869"></a>00869 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
+<a name="l00870"></a>00870 }
</pre></div>
<p>
</td>
<p>
For example if the tag was <test tag="blah" data="foo"> then this function would return 2. Spaces and newlines both qualify as valid seperators between values.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00873">873</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00872">872</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, and <a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">ServerConfig::EnumValues()</a>.<div class="fragment"><pre class="fragment"><a name="l00874"></a>00874 {
-<a name="l00875"></a>00875 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
-<a name="l00876"></a>00876 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, and <a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">ServerConfig::EnumValues()</a>.<div class="fragment"><pre class="fragment"><a name="l00873"></a>00873 {
+<a name="l00874"></a>00874 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
+<a name="l00875"></a>00875 }
</pre></div>
<p>
</td>
<p>
Valid errors can be found by looking in <a class="el" href="modules_8h.html">modules.h</a>. Any nonzero value indicates an error condition. A call to <a class="el" href="classConfigReader.html#GetError_28_29">GetError()</a> resets the error flag back to 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00828">828</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00827">827</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01545">error</a>.<div class="fragment"><pre class="fragment"><a name="l00829"></a>00829 {
-<a name="l00830"></a>00830 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#error">error</a>;
-<a name="l00831"></a>00831 this-><a class="code" href="classConfigReader.html#error">error</a> = 0;
-<a name="l00832"></a>00832 <span class="keywordflow">return</span> olderr;
-<a name="l00833"></a>00833 }
+References <a class="el" href="modules_8h-source.html#l01563">error</a>.<div class="fragment"><pre class="fragment"><a name="l00828"></a>00828 {
+<a name="l00829"></a>00829 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#error">error</a>;
+<a name="l00830"></a>00830 this-><a class="code" href="classConfigReader.html#error">error</a> = 0;
+<a name="l00831"></a>00831 <span class="keywordflow">return</span> olderr;
+<a name="l00832"></a>00832 }
</pre></div>
<p>
</td>
<p>
This method retrieves a boolean value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. The values "1", "yes" and "true" in the config file count as true to ReadFlag, and any other value counts as false.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00782">782</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="modules_8h-source.html#l01522">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00783"></a>00783 {
-<a name="l00784"></a>00784 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00785"></a>00785 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00786"></a>00786 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00787"></a>00787 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00788"></a>00788 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00789"></a>00789 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00790"></a>00790 <span class="keywordflow">if</span> (!res)
-<a name="l00791"></a>00791 {
-<a name="l00792"></a>00792 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
-<a name="l00793"></a>00793 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00794"></a>00794 }
-<a name="l00795"></a>00795 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
-<a name="l00796"></a>00796 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
-<a name="l00797"></a>00797 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00781">781</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="modules_8h-source.html#l01540">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00782"></a>00782 {
+<a name="l00783"></a>00783 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00784"></a>00784 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00785"></a>00785 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00786"></a>00786 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00787"></a>00787 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00788"></a>00788 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (!res)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
+<a name="l00792"></a>00792 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00793"></a>00793 }
+<a name="l00794"></a>00794 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
+<a name="l00795"></a>00795 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
+<a name="l00796"></a>00796 }
</pre></div>
<p>
</td>
<p>
This method retrieves an integer value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. Any invalid integer values in the tag will cause the objects error value to be set, and any call to <a class="el" href="classConfigReader.html#GetError_28_29">GetError()</a> will return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned. If a signed number is placed into a tag which is specified unsigned, 0 will be returned and <a class="el" href="classConfigReader.html#GetError_28_29">GetError()</a> will return CONF_NOT_UNSIGNED
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00799">799</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="modules_8h-source.html#l01520">CONF_NOT_A_NUMBER</a>, <a class="el" href="modules_8h-source.html#l01521">CONF_NOT_UNSIGNED</a>, <a class="el" href="modules_8h-source.html#l01522">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00800"></a>00800 {
-<a name="l00801"></a>00801 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00802"></a>00802 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00803"></a>00803 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00804"></a>00804 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00805"></a>00805 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00806"></a>00806 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00807"></a>00807 <span class="keywordflow">if</span> (!res)
-<a name="l00808"></a>00808 {
-<a name="l00809"></a>00809 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
-<a name="l00810"></a>00810 <span class="keywordflow">return</span> 0;
-<a name="l00811"></a>00811 }
-<a name="l00812"></a>00812 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(val); i++)
-<a name="l00813"></a>00813 {
-<a name="l00814"></a>00814 <span class="keywordflow">if</span> (!isdigit(val[i]))
-<a name="l00815"></a>00815 {
-<a name="l00816"></a>00816 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a>;
-<a name="l00817"></a>00817 <span class="keywordflow">return</span> 0;
-<a name="l00818"></a>00818 }
-<a name="l00819"></a>00819 }
-<a name="l00820"></a>00820 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0))
-<a name="l00821"></a>00821 {
-<a name="l00822"></a>00822 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a>;
-<a name="l00823"></a>00823 <span class="keywordflow">return</span> 0;
-<a name="l00824"></a>00824 }
-<a name="l00825"></a>00825 <span class="keywordflow">return</span> atoi(val);
-<a name="l00826"></a>00826 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00798">798</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="modules_8h-source.html#l01538">CONF_NOT_A_NUMBER</a>, <a class="el" href="modules_8h-source.html#l01539">CONF_NOT_UNSIGNED</a>, <a class="el" href="modules_8h-source.html#l01540">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00799"></a>00799 {
+<a name="l00800"></a>00800 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00801"></a>00801 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00802"></a>00802 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00803"></a>00803 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00804"></a>00804 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00805"></a>00805 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00806"></a>00806 <span class="keywordflow">if</span> (!res)
+<a name="l00807"></a>00807 {
+<a name="l00808"></a>00808 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
+<a name="l00809"></a>00809 <span class="keywordflow">return</span> 0;
+<a name="l00810"></a>00810 }
+<a name="l00811"></a>00811 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(val); i++)
+<a name="l00812"></a>00812 {
+<a name="l00813"></a>00813 <span class="keywordflow">if</span> (!isdigit(val[i]))
+<a name="l00814"></a>00814 {
+<a name="l00815"></a>00815 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a>;
+<a name="l00816"></a>00816 <span class="keywordflow">return</span> 0;
+<a name="l00817"></a>00817 }
+<a name="l00818"></a>00818 }
+<a name="l00819"></a>00819 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0))
+<a name="l00820"></a>00820 {
+<a name="l00821"></a>00821 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a>;
+<a name="l00822"></a>00822 <span class="keywordflow">return</span> 0;
+<a name="l00823"></a>00823 }
+<a name="l00824"></a>00824 <span class="keywordflow">return</span> atoi(val);
+<a name="l00825"></a>00825 }
</pre></div>
<p>
</td>
<p>
This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00766">766</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="modules_8h-source.html#l01522">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00767"></a>00767 {
-<a name="l00768"></a>00768 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00769"></a>00769 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00770"></a>00770 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00771"></a>00771 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00772"></a>00772 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00773"></a>00773 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00774"></a>00774 <span class="keywordflow">if</span> (!res)
-<a name="l00775"></a>00775 {
-<a name="l00776"></a>00776 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
-<a name="l00777"></a>00777 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00778"></a>00778 }
-<a name="l00779"></a>00779 <span class="keywordflow">return</span> val;
-<a name="l00780"></a>00780 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00765">765</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="modules_8h-source.html#l01540">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00766"></a>00766 {
+<a name="l00767"></a>00767 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00768"></a>00768 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00769"></a>00769 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00770"></a>00770 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00771"></a>00771 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00773"></a>00773 <span class="keywordflow">if</span> (!res)
+<a name="l00774"></a>00774 {
+<a name="l00775"></a>00775 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
+<a name="l00776"></a>00776 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00777"></a>00777 }
+<a name="l00778"></a>00778 <span class="keywordflow">return</span> val;
+<a name="l00779"></a>00779 }
</pre></div>
<p>
</td>
<p>
This method is partially implemented and will only return false if the config file does not exist or could not be opened.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00878">878</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00877">877</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01544">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00879"></a>00879 {
-<a name="l00880"></a>00880 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#readerror">readerror</a>;
-<a name="l00881"></a>00881 }
+References <a class="el" href="modules_8h-source.html#l01562">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00878"></a>00878 {
+<a name="l00879"></a>00879 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#readerror">readerror</a>;
+<a name="l00880"></a>00880 }
</pre></div>
<p>
</td>
<p>
It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it.
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01540">1540</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01558">1558</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00868">Enumerate()</a>, <a class="el" href="modules_8cpp-source.html#l00873">EnumerateValues()</a>, <a class="el" href="modules_8cpp-source.html#l00782">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ReadInteger()</a>, <a class="el" href="modules_8cpp-source.html#l00766">ReadValue()</a>, and <a class="el" href="modules_8cpp-source.html#l00747">~ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00867">Enumerate()</a>, <a class="el" href="modules_8cpp-source.html#l00872">EnumerateValues()</a>, <a class="el" href="modules_8cpp-source.html#l00781">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ReadInteger()</a>, <a class="el" href="modules_8cpp-source.html#l00765">ReadValue()</a>, and <a class="el" href="modules_8cpp-source.html#l00746">~ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="error"></a><!-- doxytag: member="ConfigReader::error" ref="error" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01545">1545</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01563">1563</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00828">GetError()</a>, <a class="el" href="modules_8cpp-source.html#l00782">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00766">ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00827">GetError()</a>, <a class="el" href="modules_8cpp-source.html#l00781">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00765">ReadValue()</a>. </td>
</tr>
</table>
<a class="anchor" name="errorlog"></a><!-- doxytag: member="ConfigReader::errorlog" ref="errorlog" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01541">1541</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01559">1559</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00835">DumpErrors()</a>, and <a class="el" href="modules_8cpp-source.html#l00747">~ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00834">DumpErrors()</a>, and <a class="el" href="modules_8cpp-source.html#l00746">~ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="readerror"></a><!-- doxytag: member="ConfigReader::readerror" ref="readerror" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01544">1544</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01562">1562</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00878">Verify()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00877">Verify()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classConnectClass.html#threshold">threshold</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classConnectClass.html#type">type</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00048">48</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00052">52</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="ConnectClass_28_29"></a><!-- doxytag: member="ConnectClass::ConnectClass" ref="ConnectClass_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00082">82</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00059">flood</a>, <a class="el" href="users_8h-source.html#l00062">host</a>, <a class="el" href="users_8h-source.html#l00068">pass</a>, <a class="el" href="users_8h-source.html#l00065">pingtime</a>, <a class="el" href="users_8h-source.html#l00080">recvqmax</a>, <a class="el" href="users_8h-source.html#l00056">registration_timeout</a>, <a class="el" href="users_8h-source.html#l00076">sendqmax</a>, and <a class="el" href="users_8h-source.html#l00072">threshold</a>.<div class="fragment"><pre class="fragment"><a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
-<a name="l00085"></a>00085 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
-<a name="l00086"></a>00086 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
-<a name="l00087"></a>00087 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
-<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
-<a name="l00090"></a>00090 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00091"></a>00091 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00092"></a>00092 }
+Definition at line <a class="el" href="users_8h-source.html#l00086">86</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00063">flood</a>, <a class="el" href="users_8h-source.html#l00066">host</a>, <a class="el" href="users_8h-source.html#l00072">pass</a>, <a class="el" href="users_8h-source.html#l00069">pingtime</a>, <a class="el" href="users_8h-source.html#l00084">recvqmax</a>, <a class="el" href="users_8h-source.html#l00060">registration_timeout</a>, <a class="el" href="users_8h-source.html#l00080">sendqmax</a>, and <a class="el" href="users_8h-source.html#l00076">threshold</a>.<div class="fragment"><pre class="fragment"><a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
+<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
+<a name="l00090"></a>00090 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
+<a name="l00091"></a>00091 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
+<a name="l00094"></a>00094 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00095"></a>00095 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00096"></a>00096 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00059">59</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00063">63</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="host_5BMAXBUF_5D"></a><!-- doxytag: member="ConnectClass::host" ref="host_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00062">62</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00066">66</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="pass_5BMAXBUF_5D"></a><!-- doxytag: member="ConnectClass::pass" ref="pass_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00068">68</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00072">72</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="pingtime"></a><!-- doxytag: member="ConnectClass::pingtime" ref="pingtime" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00065">65</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00069">69</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="recvqmax"></a><!-- doxytag: member="ConnectClass::recvqmax" ref="recvqmax" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00080">80</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00084">84</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="registration_5Ftimeout"></a><!-- doxytag: member="ConnectClass::registration_timeout" ref="registration_5Ftimeout" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00056">56</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00060">60</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="sendqmax"></a><!-- doxytag: member="ConnectClass::sendqmax" ref="sendqmax" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00076">76</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00080">80</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="threshold"></a><!-- doxytag: member="ConnectClass::threshold" ref="threshold" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00072">72</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00076">76</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="type"></a><!-- doxytag: member="ConnectClass::type" ref="type" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00053">53</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00057">57</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classCullItem.html#GetUser_28_29">GetUser</a>()</td><td><a class="el" href="classCullItem.html">CullItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCullItem.html#reason">reason</a></td><td><a class="el" href="classCullItem.html">CullItem</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCullItem.html#user">user</a></td><td><a class="el" href="classCullItem.html">CullItem</a></td><td><code> [private]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="cull__list_8h-source.html">cull_list.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classCullList.html#CullList_28_29">CullList</a>()</td><td><a class="el" href="classCullList.html">CullList</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCullList.html#exempt">exempt</a></td><td><a class="el" href="classCullList.html">CullList</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCullList.html#list">list</a></td><td><a class="el" href="classCullList.html">CullList</a></td><td><code> [private]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="cull__list_8h-source.html">cull_list.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classDNS.html#SetNS_28std_3A_3Astring_20dnsserver_29">SetNS</a>(std::string dnsserver)</td><td><a class="el" href="classDNS.html">DNS</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDNS.html#t">t</a></td><td><a class="el" href="classDNS.html">DNS</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDNS.html#_7EDNS_28_29">~DNS</a>()</td><td><a class="el" href="classDNS.html">DNS</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="dns_8h-source.html">dns.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classEvent.html#source">source</a></td><td><a class="el" href="classEvent.html">Event</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>()</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00197">197</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00215">215</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29"></a><!-- doxytag: member="Event::Event" ref="Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29" args="(char *anydata, Module *src, std::string eventid)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00194">194</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00194"></a>00194 : <a class="code" href="classEvent.html#data">data</a>(anydata), <a class="code" href="classEvent.html#source">source</a>(src), <a class="code" href="classEvent.html#id">id</a>(eventid) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00193">193</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00193"></a>00193 : <a class="code" href="classEvent.html#data">data</a>(anydata), <a class="code" href="classEvent.html#source">source</a>(src), <a class="code" href="classEvent.html#id">id</a>(eventid) { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00196">196</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00195">195</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00202">data</a>.<div class="fragment"><pre class="fragment"><a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#data">data</a>;
-<a name="l00199"></a>00199 }
+References <a class="el" href="modules_8h-source.html#l00220">data</a>.<div class="fragment"><pre class="fragment"><a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#data">data</a>;
+<a name="l00198"></a>00198 }
</pre></div>
<p>
</td>
<p>
Use this to determine the event type for safe casting of the data
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00212">212</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00211">211</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00211">id</a>.<div class="fragment"><pre class="fragment"><a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#id">id</a>;
-<a name="l00215"></a>00215 }
+References <a class="el" href="modules_8h-source.html#l00229">id</a>.<div class="fragment"><pre class="fragment"><a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#id">id</a>;
+<a name="l00214"></a>00214 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00201">201</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00200">200</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00206">source</a>.<div class="fragment"><pre class="fragment"><a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#source">source</a>;
-<a name="l00204"></a>00204 }
+References <a class="el" href="modules_8h-source.html#l00224">source</a>.<div class="fragment"><pre class="fragment"><a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#source">source</a>;
+<a name="l00203"></a>00203 }
</pre></div>
<p>
</td>
<p>
Implements <a class="el" href="classModuleMessage.html#Send_28_29_3D_30">ModuleMessage</a>.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00206">206</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00205">205</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>.<div class="fragment"><pre class="fragment"><a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> NULL;
-<a name="l00210"></a>00210 }
+References <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>.<div class="fragment"><pre class="fragment"><a name="l00206"></a>00206 {
+<a name="l00207"></a>00207 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
+<a name="l00208"></a>00208 <span class="keywordflow">return</span> NULL;
+<a name="l00209"></a>00209 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00202">202</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00220">220</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00196">GetData()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00195">GetData()</a>. </td>
</tr>
</table>
<a class="anchor" name="id"></a><!-- doxytag: member="Event::id" ref="id" args="" --><p>
<p>
This is arbitary text which should be used to distinguish one type of event from another.
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00211">211</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00229">229</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00212">GetEventID()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00211">GetEventID()</a>. </td>
</tr>
</table>
<a class="anchor" name="source"></a><!-- doxytag: member="Event::source" ref="source" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00206">206</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00224">224</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00201">GetSource()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00200">GetSource()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00062">62</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classExtMode.html#type">type</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00236">236</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00254">254</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29"></a><!-- doxytag: member="ExtMode::ExtMode" ref="ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29" args="(char mc, int ty, bool oper, int p_on, int p_off)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00245">245</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00245"></a>00245 : <a class="code" href="classExtMode.html#modechar">modechar</a>(mc), <a class="code" href="classExtMode.html#type">type</a>(ty), <a class="code" href="classExtMode.html#needsoper">needsoper</a>(oper), <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>(p_off) { };
+Definition at line <a class="el" href="modules_8h-source.html#l00263">263</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 : <a class="code" href="classExtMode.html#modechar">modechar</a>(mc), <a class="code" href="classExtMode.html#type">type</a>(ty), <a class="code" href="classExtMode.html#needsoper">needsoper</a>(oper), <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>(p_off) { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00244">244</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00262">262</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="modechar"></a><!-- doxytag: member="ExtMode::modechar" ref="modechar" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00239">239</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00257">257</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="needsoper"></a><!-- doxytag: member="ExtMode::needsoper" ref="needsoper" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00241">241</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00259">259</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="params_5Fwhen_5Foff"></a><!-- doxytag: member="ExtMode::params_when_off" ref="params_5Fwhen_5Foff" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00243">243</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00261">261</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="params_5Fwhen_5Fon"></a><!-- doxytag: member="ExtMode::params_when_on" ref="params_5Fwhen_5Fon" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00242">242</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00260">260</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="type"></a><!-- doxytag: member="ExtMode::type" ref="type" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00240">240</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00258">258</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classExtensible.html#GetExtList_28std_3A_3Adeque_3C_20std_3A_3Astring_20_3E_20_26list_29">GetExtList</a>(std::deque< std::string > &list)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Shrink</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Inheritance diagram for Extensible:<p><center><img src="classExtensible__inherit__graph.gif" border="0" usemap="#Extensible__inherit__map" alt="Inheritance graph"></center>
<map name="Extensible__inherit__map">
<area href="classchanrec.html" shape="rect" coords="7,156,76,183" alt="">
-<area href="classcommand__t.html" shape="rect" coords="100,156,191,183" alt="">
-<area href="classconnection.html" shape="rect" coords="215,156,300,183" alt="">
-<area href="classclassbase.html" shape="rect" coords="106,7,186,33" alt="">
-<area href="classuserrec.html" shape="rect" coords="224,231,291,257" alt="">
+<area href="classconnection.html" shape="rect" coords="100,156,185,183" alt="">
+<area href="classclassbase.html" shape="rect" coords="52,7,132,33" alt="">
+<area href="classuserrec.html" shape="rect" coords="109,231,176,257" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for Extensible:<p><center><img src="classExtensible__coll__graph.gif" border="0" usemap="#Extensible__coll__map" alt="Collaboration graph"></center>
<map name="Extensible__coll__map">
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
rect $classchanrec.html 7,156 76,183
-rect $classcommand__t.html 100,156 191,183
-rect $classconnection.html 215,156 300,183
-rect $classclassbase.html 106,7 186,33
-rect $classuserrec.html 224,231 291,257
+rect $classconnection.html 100,156 185,183
+rect $classclassbase.html 52,7 132,33
+rect $classuserrec.html 109,231 176,257
-09c2299ecc297b4760a076747177ec6d
\ No newline at end of file
+4a03bd45cd4754f0edff4e8a3bc20f54
\ No newline at end of file
<tr class="memlist"><td><a class="el" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">LoadFile</a>(std::string filename)</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classFileReader.html#_7EFileReader_28_29">~FileReader</a>()</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01621">1621</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01639">1639</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="FileReader_28_29"></a><!-- doxytag: member="FileReader::FileReader" ref="FileReader_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00891">891</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00892"></a>00892 {
-<a name="l00893"></a>00893 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00890">890</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00891"></a>00891 {
+<a name="l00892"></a>00892 }
</pre></div>
<p>
</td>
<p>
This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00884">884</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00883">883</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00885"></a>00885 {
-<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00887"></a>00887 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00888"></a>00888 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00889"></a>00889 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00884"></a>00884 {
+<a name="l00885"></a>00885 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00887"></a>00887 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00888"></a>00888 }
</pre></div>
<p>
</td>
<p>
This deletes the memory allocated to the file.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00903">903</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00904"></a>00904 {
-<a name="l00905"></a>00905 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00902">902</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00903"></a>00903 {
+<a name="l00904"></a>00904 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00907">907</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00908"></a>00908 {
-<a name="l00909"></a>00909 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
-<a name="l00910"></a>00910 {
-<a name="l00911"></a>00911 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-<a name="l00912"></a>00912 }
-<a name="l00913"></a>00913 <span class="keywordflow">else</span>
-<a name="l00914"></a>00914 {
-<a name="l00915"></a>00915 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-<a name="l00916"></a>00916 }
-<a name="l00917"></a>00917 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00906">906</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00907"></a>00907 {
+<a name="l00908"></a>00908 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
+<a name="l00909"></a>00909 {
+<a name="l00910"></a>00910 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
+<a name="l00911"></a>00911 }
+<a name="l00912"></a>00912 <span class="keywordflow">else</span>
+<a name="l00913"></a>00913 {
+<a name="l00914"></a>00914 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+<a name="l00915"></a>00915 }
+<a name="l00916"></a>00916 }
</pre></div>
<p>
</td>
<p>
This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00926">926</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00925">925</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00927"></a>00927 {
-<a name="l00928"></a>00928 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
-<a name="l00929"></a>00929 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00926"></a>00926 {
+<a name="l00927"></a>00927 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
+<a name="l00928"></a>00928 }
</pre></div>
<p>
</td>
<p>
This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00919">919</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00918">918</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00920"></a>00920 {
-<a name="l00921"></a>00921 <span class="keywordflow">if</span> ((x<0) || ((<span class="keywordtype">unsigned</span>)x><a class="code" href="classFileReader.html#fc">fc</a>.size()))
-<a name="l00922"></a>00922 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00923"></a>00923 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
-<a name="l00924"></a>00924 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00919"></a>00919 {
+<a name="l00920"></a>00920 <span class="keywordflow">if</span> ((x<0) || ((<span class="keywordtype">unsigned</span>)x><a class="code" href="classFileReader.html#fc">fc</a>.size()))
+<a name="l00921"></a>00921 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00922"></a>00922 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
+<a name="l00923"></a>00923 }
</pre></div>
<p>
</td>
<p>
This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00895">895</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00894">894</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00896"></a>00896 {
-<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00898"></a>00898 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00899"></a>00899 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00900"></a>00900 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00895"></a>00895 {
+<a name="l00896"></a>00896 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00898"></a>00898 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00899"></a>00899 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01623">1623</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01641">1641</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00907">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00884">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00926">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00919">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00895">LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00906">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00883">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00925">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00918">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00894">LoadFile()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a>(int argc, char **argv)</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">LoadModule</a>(const char *filename)</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">MakeLowerMap</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#ModeGrok">ModeGrok</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">MODERR</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#ModuleError_28_29">ModuleError</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#Parser">Parser</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#Run_28_29">Run</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#SE">SE</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#startup_5Ftime">startup_time</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#stats">stats</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#UnloadModule_28const_20char_20_2Afilename_29">UnloadModule</a>(const char *filename)</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<h1>InspIRCd Class Reference</h1><!-- doxytag: class="InspIRCd" --><code>#include <<a class="el" href="inspircd_8h-source.html">inspircd.h</a>></code>
<p>
Collaboration diagram for InspIRCd:<p><center><img src="classInspIRCd__coll__graph.gif" border="0" usemap="#InspIRCd__coll__map" alt="Collaboration graph"></center>
+<map name="InspIRCd__coll__map">
+<area href="classSocketEngine.html" shape="rect" coords="22,10,126,36" alt="">
+<area href="classserverstats.html" shape="rect" coords="30,212,118,239" alt="">
+<area href="classModeParser.html" shape="rect" coords="27,263,120,290" alt="">
+</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classInspIRCd-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">MakeLowerMap</a> ()</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#GetRevision_28_29">GetRevision</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a> ()</td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#startup_5Ftime">startup_time</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classModeParser.html">ModeParser</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#ModeGrok">ModeGrok</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">CommandParser * </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#Parser">Parser</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#SE">SE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classserverstats.html">serverstats</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#stats">stats</a></td></tr>
+
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#erase_5Ffactory_28int_20j_29">erase_factory</a> (int j)</td></tr>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00095">95</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00099">99</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29"></a><!-- doxytag: member="InspIRCd::InspIRCd" ref="InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29" args="(int argc, char **argv)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00329">Server::GetVersion()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00328">Server::GetVersion()</a>. </td>
</tr>
</table>
<a class="anchor" name="LoadModule_28const_20char_20_2Afilename_29"></a><!-- doxytag: member="InspIRCd::LoadModule" ref="LoadModule_28const_20char_20_2Afilename_29" args="(const char *filename)" --><p>
</td>
<td>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="MakeLowerMap_28_29"></a><!-- doxytag: member="InspIRCd::MakeLowerMap" ref="MakeLowerMap_28_29" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void InspIRCd::MakeLowerMap </td>
+ <td class="md" valign="top">( </td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
<p>
</td>
</tr>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="ModeGrok"></a><!-- doxytag: member="InspIRCd::ModeGrok" ref="ModeGrok" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classModeParser.html">ModeParser</a>* <a class="el" href="classInspIRCd.html#ModeGrok">InspIRCd::ModeGrok</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00109">109</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00420">Server::SendMode()</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="MODERR_5BMAXBUF_5D"></a><!-- doxytag: member="InspIRCd::MODERR" ref="MODERR_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00099">99</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00103">103</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="Parser"></a><!-- doxytag: member="InspIRCd::Parser" ref="Parser" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">CommandParser* <a class="el" href="classInspIRCd.html#Parser">InspIRCd::Parser</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00110">110</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00415">Server::AddCommand()</a>, <a class="el" href="modules_8cpp-source.html#l00400">Server::CallCommandHandler()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="modules_8cpp-source.html#l00405">Server::IsValidModuleCommand()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="SE"></a><!-- doxytag: member="InspIRCd::SE" ref="SE" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a>* <a class="el" href="classInspIRCd.html#SE">InspIRCd::SE</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00111">111</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="socket_8cpp-source.html#l00050">InspSocket::InspSocket()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="startup_5Ftime"></a><!-- doxytag: member="InspIRCd::startup_time" ref="startup_5Ftime" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00104">104</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00108">108</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="stats"></a><!-- doxytag: member="InspIRCd::stats" ref="stats" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classserverstats.html">serverstats</a>* <a class="el" href="classInspIRCd.html#stats">InspIRCd::stats</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00112">112</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="inspircd_8h-source.html">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
+rect $classSocketEngine.html 22,10 126,36
+rect $classserverstats.html 30,212 118,239
+rect $classModeParser.html 27,263 120,290
-cf2870df5188e9dd73f618305a399ded
\ No newline at end of file
+117342ac51fed621fabeb5e75c73aa1b
\ No newline at end of file
<h1>InspSocket Member List</h1>This is the complete list of members for <a class="el" href="classInspSocket.html">InspSocket</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#addr">addr</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#addy">addy</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspSocket.html#Buffer">Buffer</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#client">client</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#Close_28_29">Close</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#fd">fd</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#GetFd_28_29">GetFd</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#GetIP_28_29">GetIP</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#GetState_28_29">GetState</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#host">host</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#InspSocket_28int_20newfd_2C_20char_20_2Aip_29">InspSocket</a>(int newfd, char *ip)</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">InspSocket</a>(std::string host, int port, bool listening, unsigned long maxtime)</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#timeout_5Fend">timeout_end</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a>(std::string data)</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The destructor may implicitly call <a class="el" href="classInspSocket.html#OnClose_28_29">OnClose()</a>, and will close() and shutdown() the file descriptor used for this socket. <a href="#_7EInspSocket_28_29"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Flushes the write buffer. <a href="#FlushWriteBuffer_28_29"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#fd">fd</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#timeout">timeout</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">This value is true if the socket has timed out. <a href="#timeout"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a> [16384]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a> [65535]</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Socket input buffer, used by read(). <a href="#ibuf_5B_36_35_35_33_35_5D"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#Buffer">Buffer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Socket input buffer, used by read(). <a href="#ibuf_5B_31_36_33_38_34_5D"></a><br></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The output buffer for this socket. <a href="#Buffer"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#IP">IP</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The IP address being connected to stored in string form for easy retrieval by accessors. <a href="#IP"></a><br></td></tr>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00048">48</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00045">45</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
-<a name="l00051"></a>00051 }
+References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
+<a name="l00048"></a>00048 }
</pre></div>
<p>
</td>
<p>
The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00053">53</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00050">50</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 this-><a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
-<a name="l00056"></a>00056 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
-<a name="l00057"></a>00057 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00058"></a>00058 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00059"></a>00059 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00060"></a>00060 }
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h-source.html#l00118">IP</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 this-><a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
+<a name="l00053"></a>00053 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
+<a name="l00054"></a>00054 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00055"></a>00055 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00056"></a>00056 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00057"></a>00057 }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00062">62</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
-<p>
-References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00078">addr</a>, <a class="el" href="socket_8h-source.html#l00084">addy</a>, <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd_8h-source.html#l00049">ERROR</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnError()</a>, <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (listening) {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> ((this->fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00068"></a>00068 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00069"></a>00069 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00070"></a>00070 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
-<a name="l00071"></a>00071 <span class="keywordflow">return</span>;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this->fd,this->client,this->server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00078"></a>00078 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00079"></a>00079 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00080"></a>00080 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
-<a name="l00081"></a>00081 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
-<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 <span class="keywordflow">else</span>
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
-<a name="l00087"></a>00087 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00088"></a>00088 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00089"></a>00089 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
-<a name="l00090"></a>00090 <span class="keywordflow">return</span>;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 } <span class="keywordflow">else</span> {
-<a name="l00094"></a>00094 <span class="keywordtype">char</span>* ip;
-<a name="l00095"></a>00095 this-><a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>;
-<a name="l00096"></a>00096 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str());
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!hoste) {
-<a name="l00098"></a>00098 ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str();
-<a name="l00099"></a>00099 } <span class="keywordflow">else</span> {
-<a name="l00100"></a>00100 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste->h_addr;
-<a name="l00101"></a>00101 ip = inet_ntoa(*ia);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
-<a name="l00107"></a>00107 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00111"></a>00111 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00112"></a>00112 <span class="keywordflow">return</span>;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 this-><a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>;
-<a name="l00115"></a>00115 inet_aton(ip,&<a class="code" href="classInspSocket.html#addy">addy</a>);
-<a name="l00116"></a>00116 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
-<a name="l00117"></a>00117 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
-<a name="l00118"></a>00118 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this->port);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordtype">int</span> flags;
-<a name="l00121"></a>00121 flags = fcntl(this->fd, F_GETFL, 0);
-<a name="l00122"></a>00122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keywordflow">if</span>(connect(this->fd, (sockaddr*)&this->addr,<span class="keyword">sizeof</span>(this->addr)) == -1)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (errno != EINPROGRESS)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00129"></a>00129 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
-<a name="l00130"></a>00130 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00131"></a>00131 <span class="keywordflow">return</span>;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
-<a name="l00135"></a>00135 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00136"></a>00136 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00137"></a>00137 <span class="keywordflow">return</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00059">59</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00078">addr</a>, <a class="el" href="socket_8h-source.html#l00084">addy</a>, <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd_8h-source.html#l00051">ERROR</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00118">IP</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnError()</a>, <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (listening) {
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> ((this->fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00065"></a>00065 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00066"></a>00066 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00067"></a>00067 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
+<a name="l00068"></a>00068 <span class="keywordflow">return</span>;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="keywordflow">else</span>
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this->fd,this->client,this->server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00075"></a>00075 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00076"></a>00076 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00077"></a>00077 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
+<a name="l00078"></a>00078 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
+<a name="l00079"></a>00079 <span class="keywordflow">return</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <span class="keywordflow">else</span>
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
+<a name="l00084"></a>00084 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00085"></a>00085 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00086"></a>00086 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
+<a name="l00087"></a>00087 <span class="keywordflow">return</span>;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 } <span class="keywordflow">else</span> {
+<a name="l00091"></a>00091 <span class="keywordtype">char</span>* ip;
+<a name="l00092"></a>00092 this-><a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>;
+<a name="l00093"></a>00093 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str());
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!hoste) {
+<a name="l00095"></a>00095 ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str();
+<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
+<a name="l00097"></a>00097 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste->h_addr;
+<a name="l00098"></a>00098 ip = inet_ntoa(*ia);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
+<a name="l00104"></a>00104 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00108"></a>00108 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00109"></a>00109 <span class="keywordflow">return</span>;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 this-><a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>;
+<a name="l00112"></a>00112 inet_aton(ip,&<a class="code" href="classInspSocket.html#addy">addy</a>);
+<a name="l00113"></a>00113 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
+<a name="l00114"></a>00114 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
+<a name="l00115"></a>00115 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this->port);
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">int</span> flags;
+<a name="l00118"></a>00118 flags = fcntl(this->fd, F_GETFL, 0);
+<a name="l00119"></a>00119 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keywordflow">if</span>(connect(this->fd, (sockaddr*)&this->addr,<span class="keyword">sizeof</span>(this->addr)) == -1)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (errno != EINPROGRESS)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00126"></a>00126 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
+<a name="l00127"></a>00127 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
+<a name="l00132"></a>00132 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00133"></a>00133 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00272">272</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00271">271</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00275"></a>00275 }
+References <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00272"></a>00272 {
+<a name="l00273"></a>00273 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00274"></a>00274 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00141">141</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00138">138</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socket_8h-source.html#l00054">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00269">OnClose()</a>.
+<p>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00271">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00139"></a>00139 {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (this->fd != -1)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 this-><a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
+<a name="l00143"></a>00143 shutdown(this->fd,2);
+<a name="l00144"></a>00144 close(this->fd);
+<a name="l00145"></a>00145 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
+<a name="l00146"></a>00146 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="FlushWriteBuffer_28_29"></a><!-- doxytag: member="InspSocket::FlushWriteBuffer" ref="FlushWriteBuffer_28_29" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void InspSocket::FlushWriteBuffer </td>
+ <td class="md" valign="top">( </td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Flushes the write buffer.
+<p>
+
+<p>
+Definition at line <a class="el" href="socket_8cpp-source.html#l00181">181</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00054">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00270">OnClose()</a>.
+References <a class="el" href="socket_8h-source.html#l00111">Buffer</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00272">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (this->fd != -1)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 this-><a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
-<a name="l00146"></a>00146 shutdown(this->fd,2);
-<a name="l00147"></a>00147 close(this->fd);
-<a name="l00148"></a>00148 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
-<a name="l00149"></a>00149 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>, and <a class="el" href="socket_8cpp-source.html#l00174">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordtype">int</span> result = 0;
+<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this->Buffer.length())
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 result = send(this->fd,this->Buffer.c_str(),this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a>.length(),0);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (result > 0)
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="comment">/* If we wrote some, advance the buffer forwards */</span>
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* n = (<span class="keywordtype">char</span>*)this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a>.c_str();
+<a name="l00191"></a>00191 n += result;
+<a name="l00192"></a>00192 this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a> = n;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00259">259</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00258">258</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00054">fd</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#fd">fd</a>;
-<a name="l00262"></a>00262 }
+References <a class="el" href="socket_8h-source.html#l00054">fd</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#fd">fd</a>;
+<a name="l00261"></a>00261 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00153">153</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00150">150</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00113">IP</a>.<div class="fragment"><pre class="fragment"><a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#IP">IP</a>;
-<a name="l00156"></a>00156 }
+References <a class="el" href="socket_8h-source.html#l00118">IP</a>.<div class="fragment"><pre class="fragment"><a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#IP">IP</a>;
+<a name="l00153"></a>00153 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00254">254</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00253">253</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#state">state</a>;
-<a name="l00257"></a>00257 }
+References <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#state">state</a>;
+<a name="l00256"></a>00256 }
</pre></div>
<p>
</td>
<p>
Please note that this means OnClose will be called alongside <a class="el" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError()</a>, <a class="el" href="classInspSocket.html#OnTimeout_28_29">OnTimeout()</a>, and <a class="el" href="classInspSocket.html#Close_28_29">Close()</a>, and also when cancelling a listening socket by calling the destructor indirectly.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00270">270</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00269">269</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { <span class="keywordflow">return</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span>; }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>false to abort the connection, true to continue</dd></dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00264">264</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00263">263</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>
</td>
Within this method, you *MUST* call the <a class="el" href="classInspSocket.html#Read_28_29">Read()</a> method to read any pending data. At its lowest level, this event is signalled by the core via the socket engine. If you return false from this function, the core removes your socket from its list and erases it from the socket engine, then calls <a class="el" href="classInspSocket.html#Close_28_29">InspSocket::Close()</a> and deletes it. <dl compact><dt><b>Returns:</b></dt><dd>false to close the socket</dd></dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00268">268</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00267">267</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00266">266</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00265">265</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { <span class="keywordflow">return</span> 0; }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00265">265</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00264">264</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { <span class="keywordflow">return</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span>; }
</pre></div>
<p>
</td>
MySocket* newsocket = new MySocket(newfd,ip);<p>
Once you have done this, you can then associate the new socket with the core using <a class="el" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">Server::AddSocket()</a>.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00267">267</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00266">266</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; }
</pre></div>
<p>
</td>
<p>
The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00269">269</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00268">268</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span>; }
</pre></div>
<p>
</td>
<p>
When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00217">217</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
-<p>
-References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00119">client</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00131">length</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00268">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00267">OnIncomingConnection()</a>, <a class="el" href="socket_8cpp-source.html#l00248">SetState()</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="keywordtype">int</span> incoming = -1;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordflow">switch</span> (this->state)
-<a name="l00222"></a>00222 {
-<a name="l00223"></a>00223 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
-<a name="l00224"></a>00224 this-><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
-<a name="l00225"></a>00225 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
-<a name="l00226"></a>00226 <span class="comment"> * in read-state.</span>
-<a name="l00227"></a>00227 <span class="comment"> */</span>
-<a name="l00228"></a>00228 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this->fd);
-<a name="l00229"></a>00229 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
-<a name="l00231"></a>00231 <span class="keywordflow">break</span>;
-<a name="l00232"></a>00232 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
-<a name="l00233"></a>00233 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
-<a name="l00234"></a>00234 incoming = accept (this->fd, (sockaddr*)&<a class="code" href="classInspSocket.html#client">client</a>,&<a class="code" href="classInspSocket.html#length">length</a>);
-<a name="l00235"></a>00235 this-><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr));
-<a name="l00236"></a>00236 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00237"></a>00237 <span class="keywordflow">break</span>;
-<a name="l00238"></a>00238 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
-<a name="l00240"></a>00240 <span class="keywordflow">break</span>;
-<a name="l00241"></a>00241 <span class="keywordflow">default</span>:
-<a name="l00242"></a>00242 <span class="keywordflow">break</span>;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00246"></a>00246 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00216">216</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00124">client</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00136">length</a>, <a class="el" href="socket_8cpp-source.html#l00263">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00267">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00266">OnIncomingConnection()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="socket_8cpp-source.html#l00247">SetState()</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 <span class="keywordtype">int</span> incoming = -1;
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordflow">switch</span> (this->state)
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
+<a name="l00223"></a>00223 this-><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
+<a name="l00224"></a>00224 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
+<a name="l00225"></a>00225 <span class="comment"> * in read-state.</span>
+<a name="l00226"></a>00226 <span class="comment"> */</span>
+<a name="l00227"></a>00227 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this->fd);
+<a name="l00228"></a>00228 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00229"></a>00229 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
+<a name="l00230"></a>00230 <span class="keywordflow">break</span>;
+<a name="l00231"></a>00231 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
+<a name="l00232"></a>00232 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
+<a name="l00233"></a>00233 incoming = accept (this->fd, (sockaddr*)&<a class="code" href="classInspSocket.html#client">client</a>,&<a class="code" href="classInspSocket.html#length">length</a>);
+<a name="l00234"></a>00234 this-><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr));
+<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00236"></a>00236 <span class="keywordflow">break</span>;
+<a name="l00237"></a>00237 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
+<a name="l00239"></a>00239 <span class="keywordflow">break</span>;
+<a name="l00240"></a>00240 <span class="keywordflow">default</span>:
+<a name="l00241"></a>00241 <span class="keywordflow">break</span>;
+<a name="l00242"></a>00242 }
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00245"></a>00245 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00158">158</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00155">155</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00106">ibuf</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="keywordtype">int</span> n = recv(this->fd,this->ibuf,<span class="keyword">sizeof</span>(this->ibuf),0);
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (n > 0)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[n] = 0;
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 <span class="keywordflow">else</span>
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> NULL;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 }
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00106">ibuf</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordtype">int</span> n = recv(this->fd,this->ibuf,<span class="keyword">sizeof</span>(this->ibuf),0);
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (n > 0)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>[n] = 0;
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 <span class="keywordflow">else</span>
+<a name="l00164"></a>00164 {
+<a name="l00165"></a>00165 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> NULL;
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 }
</pre></div>
<p>
</td>
<p>
The core uses this to change socket states, and you should not call it directly.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00248">248</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00247">247</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
-<a name="l00251"></a>00251 this-><a class="code" href="classInspSocket.html#state">state</a> = s;
-<a name="l00252"></a>00252 }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
+<a name="l00250"></a>00250 this-><a class="code" href="classInspSocket.html#state">state</a> = s;
+<a name="l00251"></a>00251 }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>true if timed out, false if not timed out</dd></dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00200">200</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
-<p>
-References <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00269">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, and <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((this->state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) && (current > <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="comment">// for non-listening sockets, the timeout can occur</span>
-<a name="l00205"></a>00205 <span class="comment">// which causes termination of the connection after</span>
-<a name="l00206"></a>00206 <span class="comment">// the given number of seconds without a successful</span>
-<a name="l00207"></a>00207 <span class="comment">// connection.</span>
-<a name="l00208"></a>00208 this-><a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
-<a name="l00209"></a>00209 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
-<a name="l00210"></a>00210 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
-<a name="l00211"></a>00211 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00215"></a>00215 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00197">197</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socket_8cpp-source.html#l00181">FlushWriteBuffer()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00268">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, and <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> ((this->state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) && (current > <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <span class="comment">// for non-listening sockets, the timeout can occur</span>
+<a name="l00202"></a>00202 <span class="comment">// which causes termination of the connection after</span>
+<a name="l00203"></a>00203 <span class="comment">// the given number of seconds without a successful</span>
+<a name="l00204"></a>00204 <span class="comment">// connection.</span>
+<a name="l00205"></a>00205 this-><a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00206"></a>00206 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
+<a name="l00207"></a>00207 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
+<a name="l00208"></a>00208 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (this->Buffer.length())
+<a name="l00212"></a>00212 this-><a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00214"></a>00214 }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00177">177</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str();
-<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0;
-<a name="l00181"></a>00181 <span class="keywordtype">int</span> n = 0;
-<a name="l00182"></a>00182 <span class="keywordtype">int</span> s = data.length();
-<a name="l00183"></a>00183 <span class="keywordflow">while</span> ((written < data.length()) && (n >= 0))
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 n = send(this->fd,d,s,0);
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (n > 0)
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <span class="comment">// If we didnt write everything, advance</span>
-<a name="l00189"></a>00189 <span class="comment">// the pointers so that when we retry</span>
-<a name="l00190"></a>00190 <span class="comment">// the next time around the loop, we try</span>
-<a name="l00191"></a>00191 <span class="comment">// to write what we failed to write before.</span>
-<a name="l00192"></a>00192 written += n;
-<a name="l00193"></a>00193 s -= n;
-<a name="l00194"></a>00194 d += n;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> written;
-<a name="l00198"></a>00198 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00174">174</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socket_8h-source.html#l00111">Buffer</a>, and <a class="el" href="socket_8cpp-source.html#l00181">FlushWriteBuffer()</a>.<div class="fragment"><pre class="fragment"><a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a> = this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a> + data;
+<a name="l00177"></a>00177 this-><a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> data.length();
+<a name="l00179"></a>00179 }
</pre></div>
<p>
</td>
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00078">78</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="addy"></a><!-- doxytag: member="InspSocket::addy" ref="addy" args="" --><p>
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00084">84</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="Buffer"></a><!-- doxytag: member="InspSocket::Buffer" ref="Buffer" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classInspSocket.html#Buffer">InspSocket::Buffer</a><code> [private]</code> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+The output buffer for this socket.
+<p>
+
+<p>
+Definition at line <a class="el" href="socket_8h-source.html#l00111">111</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+<p>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00181">FlushWriteBuffer()</a>, and <a class="el" href="socket_8cpp-source.html#l00174">Write()</a>. </td>
</tr>
</table>
<a class="anchor" name="client"></a><!-- doxytag: member="InspSocket::client" ref="client" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00119">119</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+Definition at line <a class="el" href="socket_8h-source.html#l00124">124</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>. </td>
</tr>
</table>
<a class="anchor" name="fd"></a><!-- doxytag: member="InspSocket::fd" ref="fd" args="" --><p>
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00054">54</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00259">GetFd()</a>, and <a class="el" href="socket_8cpp-source.html#l00053">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00258">GetFd()</a>, and <a class="el" href="socket_8cpp-source.html#l00050">InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="host"></a><!-- doxytag: member="InspSocket::host" ref="host" args="" --><p>
Definition at line <a class="el" href="socket_8h-source.html#l00059">59</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="ibuf_5B_31_36_33_38_34_5D"></a><!-- doxytag: member="InspSocket::ibuf" ref="ibuf_5B_31_36_33_38_34_5D" args="[16384]" --><p>
+<a class="anchor" name="ibuf_5B_36_35_35_33_35_5D"></a><!-- doxytag: member="InspSocket::ibuf" ref="ibuf_5B_36_35_35_33_35_5D" args="[65535]" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">InspSocket::ibuf</a>[16384]<code> [private]</code> </td>
+ <td class="md" nowrap valign="top">char <a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">InspSocket::ibuf</a>[65535]<code> [private]</code> </td>
</tr>
</table>
</td>
<p>
Socket input buffer, used by read().
<p>
-The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 16k, this buffer is just designed to be temporary storage. space.
+The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 64k, this buffer is just designed to be temporary storage. space.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00106">106</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00158">Read()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00155">Read()</a>. </td>
</tr>
</table>
<a class="anchor" name="IP"></a><!-- doxytag: member="InspSocket::IP" ref="IP" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00113">113</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+Definition at line <a class="el" href="socket_8h-source.html#l00118">118</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00153">GetIP()</a>, and <a class="el" href="socket_8cpp-source.html#l00053">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00150">GetIP()</a>, and <a class="el" href="socket_8cpp-source.html#l00050">InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="length"></a><!-- doxytag: member="InspSocket::length" ref="length" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00131">131</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+Definition at line <a class="el" href="socket_8h-source.html#l00136">136</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>. </td>
</tr>
</table>
<a class="anchor" name="port"></a><!-- doxytag: member="InspSocket::port" ref="port" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00125">125</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. </td>
+Definition at line <a class="el" href="socket_8h-source.html#l00130">130</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. </td>
</tr>
</table>
<a class="anchor" name="state"></a><!-- doxytag: member="InspSocket::state" ref="state" args="" --><p>
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00072">72</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00254">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00048">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00248">SetState()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00253">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00045">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00247">SetState()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td>
</tr>
</table>
<a class="anchor" name="timeout"></a><!-- doxytag: member="InspSocket::timeout" ref="timeout" args="" --><p>
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00097">97</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td>
</tr>
</table>
<a class="anchor" name="timeout_5Fend"></a><!-- doxytag: member="InspSocket::timeout_end" ref="timeout_5Fend" args="" --><p>
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00091">91</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="socket_8h-source.html">socket.h</a><li><a class="el" href="socket_8cpp-source.html">socket.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
-7f01698bd61166ed2298c165402581f7
\ No newline at end of file
+51939a33bf707f1bcff03f02bd5b43b3
\ No newline at end of file
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00070">70</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>Invited Member List</h1>This is the complete list of members for <a class="el" href="classInvited.html">Invited</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classclassbase.html#age">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classInvited.html#channel_5BCHANMAX_5D">channel</a></td><td><a class="el" href="classInvited.html">Invited</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInvited.html#channel">channel</a></td><td><a class="el" href="classInvited.html">Invited</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#classbase_28_29">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classInvited-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classInvited.html#channel_5BCHANMAX_5D">channel</a> [CHANMAX]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classInvited.html#channel">channel</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00039">39</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="channel_5BCHANMAX_5D"></a><!-- doxytag: member="Invited::channel" ref="channel_5BCHANMAX_5D" args="[CHANMAX]" --><p>
+Definition at line <a class="el" href="users_8h-source.html#l00043">43</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="channel"></a><!-- doxytag: member="Invited::channel" ref="channel" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classInvited.html#channel_5BCHANMAX_5D">Invited::channel</a>[CHANMAX] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> <a class="el" href="classInvited.html#channel">Invited::channel</a> </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00042">42</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00046">46</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00115">userrec::InviteTo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00141">userrec::InviteTo()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
-7fbf1811875f3b2d0f9e2d08f95517bf
\ No newline at end of file
+14a980236c753f79990d5ee0b50c1adc
\ No newline at end of file
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classModeParameter.html#mode">mode</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00084">84</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<a class="anchor" name="mode"></a><!-- doxytag: member="ModeParameter::mode" ref="mode" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00082">82</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<a class="anchor" name="parameter_5BMAXBUF_5D"></a><!-- doxytag: member="ModeParameter::parameter" ref="parameter_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00083">83</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">ProtoSendMode</a>(void *opaque, int target_type, void *target, std::string modeline)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModule.html#_7EModule_28_29">~Module</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00254">254</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00272">272</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="Module_28Server_20_2AMe_29"></a><!-- doxytag: member="Module::Module" ref="Module_28Server_20_2AMe_29" args="(Server *Me)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00220">220</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00220"></a>00220 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00219">219</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00219"></a>00219 { }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00221">221</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00220">220</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00220"></a>00220 { }
</pre></div>
<p>
</td>
<p>
The method should return a <a class="el" href="classVersion.html">Version</a> object with its version information assigned via <a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version::Version</a>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00232">232</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00231">231</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00053">VF_VENDOR</a>.<div class="fragment"><pre class="fragment"><a name="l00232"></a>00232 { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#VF_5FVENDOR">VF_VENDOR</a>); }
+References <a class="el" href="modules_8h-source.html#l00053">VF_VENDOR</a>.<div class="fragment"><pre class="fragment"><a name="l00231"></a>00231 { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#VF_5FVENDOR">VF_VENDOR</a>); }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00242">242</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00242"></a>00242 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00241">241</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00241"></a>00241 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00241">241</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00240">240</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>.<div class="fragment"><pre class="fragment"><a name="l00241"></a>00241 { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
+References <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>.<div class="fragment"><pre class="fragment"><a name="l00240"></a>00240 { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to block the ban, 0 to continue as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00267">267</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00266">266</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00293">293</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00293"></a>00293 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00292">292</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00292"></a>00292 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00289">289</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00289"></a>00289 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00288">288</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00288"></a>00288 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00291">291</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00291"></a>00291 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00290">290</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00290"></a>00290 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00292">292</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00292"></a>00292 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00291">291</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00291"></a>00291 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00290">290</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00290"></a>00290 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00289">289</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00289"></a>00289 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00246">246</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00245">245</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00245"></a>00245 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00287">287</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00287"></a>00287 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00286">286</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00286"></a>00286 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the GECOS change, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00260">260</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00259">259</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the host change, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00259">259</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00258">258</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00258"></a>00258 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00288">288</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00288"></a>00288 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00287">287</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00287"></a>00287 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00257">257</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00257"></a>00257 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00256">256</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00256"></a>00256 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00254">254</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00253">253</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00253"></a>00253 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00255">255</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00254">254</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00256">256</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00256"></a>00256 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00255">255</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>true to indicate readiness, false if otherwise</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00249">249</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00248">248</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00299">299</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00299"></a>00299 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00298">298</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00298"></a>00298 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00284">284</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00284"></a>00284 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00283">283</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00283"></a>00283 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to block the unban, 0 to continue as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00268">268</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00267">267</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00298">298</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00298"></a>00298 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00297">297</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00297"></a>00297 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00294">294</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00294"></a>00294 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00293">293</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00293"></a>00293 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00296">296</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00296"></a>00296 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00295">295</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00295"></a>00295 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00297">297</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00297"></a>00297 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00296">296</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00296"></a>00296 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00295">295</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00295"></a>00295 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00294">294</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00294"></a>00294 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00262">262</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00262"></a>00262 { <span class="keywordflow">return</span>; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00261">261</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00261"></a>00261 { <span class="keywordflow">return</span>; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00230">230</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00230"></a>00230 { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00229">229</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00278">278</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00278"></a>00278 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00277">277</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00277"></a>00277 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00266">266</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00265">265</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00265">265</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00264">264</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00234">234</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00233">233</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00233"></a>00233 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to prevent the kill, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00243">243</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00243"></a>00243 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00242">242</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00242"></a>00242 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00244">244</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00244"></a>00244 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00243">243</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00243"></a>00243 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00261">261</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00261"></a>00261 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00260">260</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00231">231</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00231"></a>00231 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00230">230</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00230"></a>00230 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00233">233</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00233"></a>00233 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00232">232</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00232"></a>00232 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to match the passwords, 0 to do nothing</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00264">264</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00263">263</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00277">277</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00277"></a>00277 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00276">276</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00276"></a>00276 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to block the command, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00248">248</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00247">247</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00247"></a>00247 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the mode, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00253">253</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00253"></a>00253 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00252">252</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00252"></a>00252 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00269">269</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00268">268</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00271">271</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00271"></a>00271 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00270">270</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>nonzero if the event was handled, in which case readresult must be valid on exit</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00272">272</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00272"></a>00272 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00271">271</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00271"></a>00271 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>Number of characters actually written or 0 if you didn't handle the operation</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00270">270</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00269">269</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00227">227</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00227"></a>00227 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00226">226</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00226"></a>00226 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00275">275</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00275"></a>00275 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00274">274</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00274"></a>00274 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00263">263</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00262">262</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00182">Request::Send()</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> NULL; };
+Referenced by <a class="el" href="modules_8cpp-source.html#l00181">Request::Send()</a>.<div class="fragment"><pre class="fragment"><a name="l00262"></a>00262 { <span class="keywordflow">return</span> NULL; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00247">247</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00247"></a>00247 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00246">246</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00228">228</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00228"></a>00228 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00227">227</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00227"></a>00227 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00258">258</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00258"></a>00258 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00257">257</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00257"></a>00257 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00280">280</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00280"></a>00280 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00279">279</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00279"></a>00279 { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00282">282</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00282"></a>00282 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00281">281</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00281"></a>00281 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00279">279</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00279"></a>00279 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00278">278</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00278"></a>00278 { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00283">283</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00283"></a>00283 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00282">282</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00282"></a>00282 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00245">245</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00245"></a>00245 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00244">244</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00244"></a>00244 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00222"></a>00222 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00221">221</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00224">224</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00224"></a>00224 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00223">223</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00223"></a>00223 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00276">276</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00276"></a>00276 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00275">275</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00275"></a>00275 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00225">225</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00225"></a>00225 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00224">224</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00224"></a>00224 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00252">252</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00252"></a>00252 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00251">251</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00251"></a>00251 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00273">273</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00272">272</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00272"></a>00272 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00274">274</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00274"></a>00274 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00273">273</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00226">226</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00226"></a>00226 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00225">225</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00225"></a>00225 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00240">240</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00240"></a>00240 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00239">239</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00239"></a>00239 { };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the invite, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00236">236</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00236"></a>00236 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00235">235</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00235"></a>00235 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 To prevent the join, 0 to allow it.</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00229">229</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 { <span class="keywordflow">return</span> 0; }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00228">228</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00228"></a>00228 { <span class="keywordflow">return</span> 0; }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to prevent the kick, 0 to allow it</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00251">251</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00251"></a>00251 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00250">250</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00250"></a>00250 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the NOTICE, 0 to allow it</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00237">237</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00237"></a>00237 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00236">236</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00236"></a>00236 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the change, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00239">239</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00239"></a>00239 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00238">238</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the NOTICE, 0 to allow it</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00238">238</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00237">237</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00237"></a>00237 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00223">223</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00223"></a>00223 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00222"></a>00222 { }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00250">250</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00250"></a>00250 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00249">249</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00286">286</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00286"></a>00286 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00285">285</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00285"></a>00285 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00235">235</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00235"></a>00235 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00234">234</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00285">285</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00285"></a>00285 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00284">284</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00284"></a>00284 { };
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00281">281</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00281"></a>00281 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00280">280</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00280"></a>00280 { };
</pre></div>
<p>
</td>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleFactory.html#_7EModuleFactory_28_29">~ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01676">1676</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01694">1694</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="ModuleFactory_28_29"></a><!-- doxytag: member="ModuleFactory::ModuleFactory" ref="ModuleFactory_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01679">1679</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01679"></a>01679 { }
+Definition at line <a class="el" href="modules_8h-source.html#l01697">1697</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01697"></a>01697 { }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01680">1680</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01680"></a>01680 { }
+Definition at line <a class="el" href="modules_8h-source.html#l01698">1698</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01698"></a>01698 { }
</pre></div>
<p>
</td>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#Send_28_29_3D_30">Send</a>()=0</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>()</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00143">143</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00161">161</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="_7EModuleMessage_28_29"></a><!-- doxytag: member="ModuleMessage::~ModuleMessage" ref="_7EModuleMessage_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00149">149</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00149"></a>00149 {};
+Definition at line <a class="el" href="modules_8h-source.html#l00167">167</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00167"></a>00167 {};
</pre></div>
<p>
</td>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classRequest.html#source">source</a></td><td><a class="el" href="classRequest.html">Request</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>()</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00157">157</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00175">175</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29"></a><!-- doxytag: member="Request::Request" ref="Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29" args="(char *anydata, Module *src, Module *dst)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00165">165</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00165"></a>00165 : <a class="code" href="classRequest.html#data">data</a>(anydata), <a class="code" href="classRequest.html#source">source</a>(src), <a class="code" href="classRequest.html#dest">dest</a>(dst) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00164">164</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00164"></a>00164 : <a class="code" href="classRequest.html#data">data</a>(anydata), <a class="code" href="classRequest.html#source">source</a>(src), <a class="code" href="classRequest.html#dest">dest</a>(dst) { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00167">167</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00166">166</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00162">data</a>.<div class="fragment"><pre class="fragment"><a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#data">data</a>;
-<a name="l00170"></a>00170 }
+References <a class="el" href="modules_8h-source.html#l00180">data</a>.<div class="fragment"><pre class="fragment"><a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#data">data</a>;
+<a name="l00169"></a>00169 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00177">177</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00176">176</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00169">dest</a>.<div class="fragment"><pre class="fragment"><a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#dest">dest</a>;
-<a name="l00180"></a>00180 }
+References <a class="el" href="modules_8h-source.html#l00187">dest</a>.<div class="fragment"><pre class="fragment"><a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#dest">dest</a>;
+<a name="l00179"></a>00179 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00172">172</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00171">171</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00166">source</a>.<div class="fragment"><pre class="fragment"><a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#source">source</a>;
-<a name="l00175"></a>00175 }
+References <a class="el" href="modules_8h-source.html#l00184">source</a>.<div class="fragment"><pre class="fragment"><a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#source">source</a>;
+<a name="l00174"></a>00174 }
</pre></div>
<p>
</td>
<p>
Implements <a class="el" href="classModuleMessage.html#Send_28_29_3D_30">ModuleMessage</a>.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00182">182</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l00169">dest</a>, and <a class="el" href="modules_8cpp-source.html#l00263">Module::OnRequest()</a>.<div class="fragment"><pre class="fragment"><a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this->dest)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#dest">dest</a>-><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<span class="keyword">this</span>);
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="keywordflow">else</span>
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> NULL;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00181">181</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00187">dest</a>, and <a class="el" href="modules_8cpp-source.html#l00262">Module::OnRequest()</a>.<div class="fragment"><pre class="fragment"><a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordflow">if</span> (this->dest)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#dest">dest</a>-><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<span class="keyword">this</span>);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 <span class="keywordflow">else</span>
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> NULL;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00162">162</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00180">180</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00167">GetData()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00166">GetData()</a>. </td>
</tr>
</table>
<a class="anchor" name="dest"></a><!-- doxytag: member="Request::dest" ref="dest" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00169">169</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00187">187</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00177">GetDest()</a>, and <a class="el" href="modules_8cpp-source.html#l00182">Send()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00176">GetDest()</a>, and <a class="el" href="modules_8cpp-source.html#l00181">Send()</a>. </td>
</tr>
</table>
<a class="anchor" name="source"></a><!-- doxytag: member="Request::source" ref="source" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00166">166</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00184">184</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00172">GetSource()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00171">GetSource()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>Server Member List</h1>This is the complete list of members for <a class="el" href="classServer.html">Server</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand</a>(char *cmd, handlerfunc f, char flags, int minparams, char *source)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand</a>(command_t *f)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddELine</a>(long duration, std::string source, std::string reason, std::string hostmask)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a>(char modechar)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">AddExtendedMode</a>(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">UserToPseudo</a>(userrec *user, std::string message)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#_7EServer_28_29">~Server</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a> (char modechar)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds an extended mode letter which is parsed by a module and handled in a list fashion. <a href="#AddExtendedListMode_28char_20modechar_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand</a> (char *cmd, <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, char flags, int minparams, char *source)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand</a> (<a class="el" href="classcommand__t.html">command_t</a> *f)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a command to the command table. <a href="#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29"></a><br></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a command to the command table. <a href="#AddCommand_28command_5Ft_20_2Af_29"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">SendMode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sends a servermode. <a href="#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><br></td></tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01096">1096</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01114">1114</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="Server_28_29"></a><!-- doxytag: member="Server::Server" ref="Server_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
Creates a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00305">305</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00304">304</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 }
</pre></div>
<p>
</td>
<p>
Destroys a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00309">309</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00308">308</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 }
</pre></div>
<p>
</td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29"></a><!-- doxytag: member="Server::AddCommand" ref="AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29" args="(char *cmd, handlerfunc f, char flags, int minparams, char *source)" --><p>
+<a class="anchor" name="AddCommand_28command_5Ft_20_2Af_29"></a><!-- doxytag: member="Server::AddCommand" ref="AddCommand_28command_5Ft_20_2Af_29" args="(command_t *f)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<tr>
<td class="md" nowrap valign="top">void Server::AddCommand </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
- <td class="mdname" nowrap> <em>cmd</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> </td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char </td>
- <td class="mdname" nowrap> <em>flags</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>minparams</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>source</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [virtual]</code></td>
+ <td class="md" nowrap valign="top"><a class="el" href="classcommand__t.html">command_t</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
Adds a command to the command table.
<p>
This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc:<p>
-typedef void (handlerfunc) (char**, int, userrec*); ... void <a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kill(char **parameters, int pcnt, userrec *user)</a><p>
+typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)<p>
When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'. The source parameter is used for resource tracking, and should contain the name of your module (with file extension) e.g. "m_blarp.so". If you place the wrong identifier here, you can cause crashes if your module is unloaded.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00416">416</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00415">415</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand()</a>.<div class="fragment"><pre class="fragment"><a name="l00417"></a>00417 {
-<a name="l00418"></a>00418 <a class="code" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand</a>(cmd,f,flags,minparams,source);
-<a name="l00419"></a>00419 }
+References <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>.<div class="fragment"><pre class="fragment"><a name="l00416"></a>00416 {
+<a name="l00417"></a>00417 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CreateCommand(f);
+<a name="l00418"></a>00418 }
</pre></div>
<p>
</td>
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00660">660</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00659">659</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline()</a>.<div class="fragment"><pre class="fragment"><a name="l00661"></a>00661 {
-<a name="l00662"></a>00662 <a class="code" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00663"></a>00663 }
+References <a class="el" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline()</a>.<div class="fragment"><pre class="fragment"><a name="l00660"></a>00660 {
+<a name="l00661"></a>00661 <a class="code" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00662"></a>00662 }
</pre></div>
<p>
</td>
(4) The mode and its parameter are NOT stored in the channels modes structure<p>
It is down to the module handling the mode to maintain state and determine what 'items' (e.g. users, or a banlist) have the mode set on them, and process the modes at the correct times, e.g. during access checks on channels, etc. When the extended mode is triggered the OnExtendedMode method will be triggered as above. Note that the target you are given will be a channel, if for example your mode is set 'on a user' (in for example +a) you must use <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Server::Find</a> to locate the user the mode is operating on. Your mode handler may return 1 to handle the mode AND tell the core to display the mode change, e.g. '+aaa one two three' in the case of the mode for 'two', or it may return -1 to 'eat' the mode change, so the above example would become '+aa one three' after processing.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00584">584</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00583">583</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00144">ModeMakeList()</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.<div class="fragment"><pre class="fragment"><a name="l00585"></a>00585 {
-<a name="l00586"></a>00586 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
-<a name="l00587"></a>00587 <span class="keywordflow">if</span> (res)
-<a name="l00588"></a>00588 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
-<a name="l00589"></a>00589 <span class="keywordflow">return</span> res;
-<a name="l00590"></a>00590 }
+References <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00143">ModeMakeList()</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.<div class="fragment"><pre class="fragment"><a name="l00584"></a>00584 {
+<a name="l00585"></a>00585 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
+<a name="l00586"></a>00586 <span class="keywordflow">if</span> (res)
+<a name="l00587"></a>00587 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
+<a name="l00588"></a>00588 <span class="keywordflow">return</span> res;
+<a name="l00589"></a>00589 }
</pre></div>
<p>
</td>
<p>
This allows modules to add extra mode letters, e.g. +x for hostcloak. the "type" parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00556">556</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="modules_8h-source.html#l00032">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00033">MT_SERVER</a>.<div class="fragment"><pre class="fragment"><a name="l00557"></a>00557 {
-<a name="l00558"></a>00558 <span class="keywordflow">if</span> (((modechar >= <span class="charliteral">'A'</span>) && (modechar <= <span class="charliteral">'Z'</span>)) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <span class="charliteral">'z'</span>)))
-<a name="l00559"></a>00559 {
-<a name="l00560"></a>00560 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
-<a name="l00561"></a>00561 {
-<a name="l00562"></a>00562 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-<a name="l00563"></a>00563 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00564"></a>00564 }
-<a name="l00565"></a>00565 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#MT_5FCLIENT">MT_CLIENT</a>))
-<a name="l00566"></a>00566 {
-<a name="l00567"></a>00567 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-<a name="l00568"></a>00568 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00569"></a>00569 }
-<a name="l00570"></a>00570 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
-<a name="l00571"></a>00571 {
-<a name="l00572"></a>00572 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-<a name="l00573"></a>00573 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00574"></a>00574 }
-<a name="l00575"></a>00575 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-<a name="l00576"></a>00576 }
-<a name="l00577"></a>00577 <span class="keywordflow">else</span>
-<a name="l00578"></a>00578 {
-<a name="l00579"></a>00579 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
-<a name="l00580"></a>00580 }
-<a name="l00581"></a>00581 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00582"></a>00582 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00555">555</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="modules_8h-source.html#l00032">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00033">MT_SERVER</a>.<div class="fragment"><pre class="fragment"><a name="l00556"></a>00556 {
+<a name="l00557"></a>00557 <span class="keywordflow">if</span> (((modechar >= <span class="charliteral">'A'</span>) && (modechar <= <span class="charliteral">'Z'</span>)) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <span class="charliteral">'z'</span>)))
+<a name="l00558"></a>00558 {
+<a name="l00559"></a>00559 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+<a name="l00562"></a>00562 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00563"></a>00563 }
+<a name="l00564"></a>00564 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#MT_5FCLIENT">MT_CLIENT</a>))
+<a name="l00565"></a>00565 {
+<a name="l00566"></a>00566 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+<a name="l00567"></a>00567 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00568"></a>00568 }
+<a name="l00569"></a>00569 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
+<a name="l00570"></a>00570 {
+<a name="l00571"></a>00571 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+<a name="l00572"></a>00572 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00573"></a>00573 }
+<a name="l00574"></a>00574 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+<a name="l00575"></a>00575 }
+<a name="l00576"></a>00576 <span class="keywordflow">else</span>
+<a name="l00577"></a>00577 {
+<a name="l00578"></a>00578 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
+<a name="l00579"></a>00579 }
+<a name="l00580"></a>00580 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00581"></a>00581 }
</pre></div>
<p>
</td>
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00640">640</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00639">639</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline()</a>.<div class="fragment"><pre class="fragment"><a name="l00641"></a>00641 {
-<a name="l00642"></a>00642 <a class="code" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00643"></a>00643 }
+References <a class="el" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline()</a>.<div class="fragment"><pre class="fragment"><a name="l00640"></a>00640 {
+<a name="l00641"></a>00641 <a class="code" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00642"></a>00642 }
</pre></div>
<p>
</td>
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00655">655</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00654">654</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline()</a>.<div class="fragment"><pre class="fragment"><a name="l00656"></a>00656 {
-<a name="l00657"></a>00657 <a class="code" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00658"></a>00658 }
+References <a class="el" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline()</a>.<div class="fragment"><pre class="fragment"><a name="l00655"></a>00655 {
+<a name="l00656"></a>00656 <a class="code" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00657"></a>00657 }
</pre></div>
<p>
</td>
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00645">645</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00644">644</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline()</a>.<div class="fragment"><pre class="fragment"><a name="l00646"></a>00646 {
-<a name="l00647"></a>00647 <a class="code" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
-<a name="l00648"></a>00648 }
+References <a class="el" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline()</a>.<div class="fragment"><pre class="fragment"><a name="l00645"></a>00645 {
+<a name="l00646"></a>00646 <a class="code" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
+<a name="l00647"></a>00647 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00313">313</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00312">312</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00314"></a>00314 {
-<a name="l00315"></a>00315 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
-<a name="l00316"></a>00316 }
+References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00313"></a>00313 {
+<a name="l00314"></a>00314 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
+<a name="l00315"></a>00315 }
</pre></div>
<p>
</td>
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00650">650</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00649">649</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline()</a>.<div class="fragment"><pre class="fragment"><a name="l00651"></a>00651 {
-<a name="l00652"></a>00652 <a class="code" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
-<a name="l00653"></a>00653 }
+References <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline()</a>.<div class="fragment"><pre class="fragment"><a name="l00650"></a>00650 {
+<a name="l00651"></a>00651 <a class="code" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline</a>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
+<a name="l00652"></a>00652 }
</pre></div>
<p>
</td>
<p>
"1w2d") and return its value as a total number of seconds. This is the same function used internally by /GLINE etc to set the ban times.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00690">690</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00689">689</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration()</a>.<div class="fragment"><pre class="fragment"><a name="l00691"></a>00691 {
-<a name="l00692"></a>00692 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
-<a name="l00693"></a>00693 }
+References <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration()</a>.<div class="fragment"><pre class="fragment"><a name="l00690"></a>00690 {
+<a name="l00691"></a>00691 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
+<a name="l00692"></a>00692 }
</pre></div>
<p>
</td>
Calls the handler for a command, either implemented by the core or by another module.
<p>
You can use this function to trigger other commands in the ircd, such as PRIVMSG, JOIN, KICK etc, or even as a method of callback. By defining command names that are untypeable for users on irc (e.g. those which contain a or <br>
-) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih <a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand()</a>. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.
+) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih <a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand()</a>. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00401">401</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00400">400</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
-<a name="l00403"></a>00403 <a class="code" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a>(commandname.c_str(),parameters,pcnt,user);
-<a name="l00404"></a>00404 }
+References <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>.<div class="fragment"><pre class="fragment"><a name="l00401"></a>00401 {
+<a name="l00402"></a>00402 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CallHandler(commandname,parameters,pcnt,user);
+<a name="l00403"></a>00403 }
</pre></div>
<p>
</td>
<p>
You should always call this method to change a user's GECOS rather than writing directly to the fullname member of userrec, as any change applied via this method will be propogated to any linked servers.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00499">499</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00498">498</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName()</a>.<div class="fragment"><pre class="fragment"><a name="l00500"></a>00500 {
-<a name="l00501"></a>00501 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
-<a name="l00502"></a>00502 }
+References <a class="el" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName()</a>.<div class="fragment"><pre class="fragment"><a name="l00499"></a>00499 {
+<a name="l00500"></a>00500 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
+<a name="l00501"></a>00501 }
</pre></div>
<p>
</td>
<p>
You should always call this method to change a user's host rather than writing directly to the dhost member of userrec, as any change applied via this method will be propogated to any linked servers.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00494">494</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00493">493</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost()</a>.<div class="fragment"><pre class="fragment"><a name="l00495"></a>00495 {
-<a name="l00496"></a>00496 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
-<a name="l00497"></a>00497 }
+References <a class="el" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost()</a>.<div class="fragment"><pre class="fragment"><a name="l00494"></a>00494 {
+<a name="l00495"></a>00495 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
+<a name="l00496"></a>00496 }
</pre></div>
<p>
</td>
<p>
This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00386">386</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00385">385</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange()</a>.<div class="fragment"><pre class="fragment"><a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 <a class="code" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
-<a name="l00389"></a>00389 }
+References <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>.<div class="fragment"><pre class="fragment"><a name="l00386"></a>00386 {
+<a name="l00387"></a>00387 <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
+<a name="l00388"></a>00388 }
</pre></div>
<p>
</td>
<p>
This function will return a string containing either @, %, +, or an empty string, representing the user's privilages upon the channel you specify.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00524">524</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00523">523</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode()</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {
-<a name="l00526"></a>00526 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
-<a name="l00527"></a>00527 }
+References <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode()</a>.<div class="fragment"><pre class="fragment"><a name="l00524"></a>00524 {
+<a name="l00525"></a>00525 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
+<a name="l00526"></a>00526 }
</pre></div>
<p>
</td>
<p>
This method is used internally by the NICK and QUIT commands, and the <a class="el" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">Server::SendCommon</a> method.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00472">472</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00471">471</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels()</a>.<div class="fragment"><pre class="fragment"><a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
-<a name="l00475"></a>00475 }
+References <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels()</a>.<div class="fragment"><pre class="fragment"><a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
+<a name="l00474"></a>00474 }
</pre></div>
<p>
</td>
<p>
This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00592">592</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00593"></a>00593 {
-<a name="l00594"></a>00594 <span class="keywordflow">return</span> usercount(c);
-<a name="l00595"></a>00595 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00591">591</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00592"></a>00592 {
+<a name="l00593"></a>00593 <span class="keywordflow">return</span> usercount(c);
+<a name="l00594"></a>00594 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00685">685</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00684">684</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline()</a>.<div class="fragment"><pre class="fragment"><a name="l00686"></a>00686 {
-<a name="l00687"></a>00687 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline</a>(hostmask.c_str());
-<a name="l00688"></a>00688 }
+References <a class="el" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline()</a>.<div class="fragment"><pre class="fragment"><a name="l00685"></a>00685 {
+<a name="l00686"></a>00686 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline</a>(hostmask.c_str());
+<a name="l00687"></a>00687 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00665">665</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00664">664</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline()</a>.<div class="fragment"><pre class="fragment"><a name="l00666"></a>00666 {
-<a name="l00667"></a>00667 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline</a>(hostmask.c_str());
-<a name="l00668"></a>00668 }
+References <a class="el" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline()</a>.<div class="fragment"><pre class="fragment"><a name="l00665"></a>00665 {
+<a name="l00666"></a>00666 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline</a>(hostmask.c_str());
+<a name="l00667"></a>00667 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00680">680</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00679">679</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline()</a>.<div class="fragment"><pre class="fragment"><a name="l00681"></a>00681 {
-<a name="l00682"></a>00682 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline</a>(hostmask.c_str());
-<a name="l00683"></a>00683 }
+References <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline()</a>.<div class="fragment"><pre class="fragment"><a name="l00680"></a>00680 {
+<a name="l00681"></a>00681 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline</a>(hostmask.c_str());
+<a name="l00682"></a>00682 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00670">670</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00669">669</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline()</a>.<div class="fragment"><pre class="fragment"><a name="l00671"></a>00671 {
-<a name="l00672"></a>00672 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline</a>(nickname.c_str());
-<a name="l00673"></a>00673 }
+References <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline()</a>.<div class="fragment"><pre class="fragment"><a name="l00670"></a>00670 {
+<a name="l00671"></a>00671 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline</a>(nickname.c_str());
+<a name="l00672"></a>00672 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00334">334</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00333">333</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <span class="keywordflow">for</span> (std::vector<InspSocket*>::iterator a = <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.begin(); a < <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.end(); a++)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <span class="keywordflow">if</span> (*a == sock)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
-<a name="l00341"></a>00341 <span class="keywordflow">return</span>;
-<a name="l00342"></a>00342 }
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344 }
+References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 <span class="keywordflow">for</span> (std::vector<InspSocket*>::iterator a = <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.begin(); a < <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.end(); a++)
+<a name="l00336"></a>00336 {
+<a name="l00337"></a>00337 <span class="keywordflow">if</span> (*a == sock)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
+<a name="l00340"></a>00340 <span class="keywordflow">return</span>;
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00675">675</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00674">674</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline()</a>.<div class="fragment"><pre class="fragment"><a name="l00676"></a>00676 {
-<a name="l00677"></a>00677 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline</a>(ipaddr.c_str());
-<a name="l00678"></a>00678 }
+References <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline()</a>.<div class="fragment"><pre class="fragment"><a name="l00675"></a>00675 {
+<a name="l00676"></a>00676 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline</a>(ipaddr.c_str());
+<a name="l00677"></a>00677 }
</pre></div>
<p>
</td>
<p>
This function will return NULL if the channel does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00519">519</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00518">518</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00520"></a>00520 {
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
-<a name="l00522"></a>00522 }
+References <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00519"></a>00519 {
+<a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
+<a name="l00521"></a>00521 }
</pre></div>
<p>
</td>
<p>
This function will return NULL if the file descriptor is not associated with a valid user.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00514">514</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00515"></a>00515 {
-<a name="l00516"></a>00516 <span class="keywordflow">return</span> (socket < 65536 ? fd_ref_table[socket] : NULL);
-<a name="l00517"></a>00517 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00513">513</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00514"></a>00514 {
+<a name="l00515"></a>00515 <span class="keywordflow">return</span> (socket < 65536 ? fd_ref_table[socket] : NULL);
+<a name="l00516"></a>00516 }
</pre></div>
<p>
</td>
<p>
You must provide the filename of the module. If the module cannot be found (is not loaded) the function will return NULL.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00724">724</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8cpp-source.html#l00935">MODCOUNT</a>, <a class="el" href="inspircd__io_8h-source.html#l00247">ServerConfig::module_names</a>, and <a class="el" href="channels_8cpp.html#modules">modules</a>.<div class="fragment"><pre class="fragment"><a name="l00725"></a>00725 {
-<a name="l00726"></a>00726 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <= <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>; i++)
-<a name="l00727"></a>00727 {
-<a name="l00728"></a>00728 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
-<a name="l00729"></a>00729 {
-<a name="l00730"></a>00730 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
-<a name="l00731"></a>00731 }
-<a name="l00732"></a>00732 }
-<a name="l00733"></a>00733 <span class="keywordflow">return</span> NULL;
-<a name="l00734"></a>00734 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00723">723</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp-source.html#l00934">MODCOUNT</a>, <a class="el" href="inspircd__io_8h-source.html#l00248">ServerConfig::module_names</a>, and <a class="el" href="channels_8cpp.html#modules">modules</a>.<div class="fragment"><pre class="fragment"><a name="l00724"></a>00724 {
+<a name="l00725"></a>00725 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <= <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>; i++)
+<a name="l00726"></a>00726 {
+<a name="l00727"></a>00727 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
+<a name="l00728"></a>00728 {
+<a name="l00729"></a>00729 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
+<a name="l00730"></a>00730 }
+<a name="l00731"></a>00731 }
+<a name="l00732"></a>00732 <span class="keywordflow">return</span> NULL;
+<a name="l00733"></a>00733 }
</pre></div>
<p>
</td>
<p>
This function will return NULL if the nick does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00509">509</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00508">508</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find()</a>.<div class="fragment"><pre class="fragment"><a name="l00510"></a>00510 {
-<a name="l00511"></a>00511 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
-<a name="l00512"></a>00512 }
+References <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find()</a>.<div class="fragment"><pre class="fragment"><a name="l00509"></a>00509 {
+<a name="l00510"></a>00510 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
+<a name="l00511"></a>00511 }
</pre></div>
<p>
</td>
<p>
See the <a class="el" href="classAdmin.html">Admin</a> class for further information of the return value. The members <a class="el" href="classAdmin.html#Nick">Admin::Nick</a>, <a class="el" href="classAdmin.html#Email">Admin::Email</a> and <a class="el" href="classAdmin.html#Name">Admin::Name</a> contain the information for the server where the module is loaded.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00549">549</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00548">548</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00089">ServerConfig::AdminEmail</a>, <a class="el" href="inspircd__io_8h-source.html#l00084">ServerConfig::AdminName</a>, and <a class="el" href="inspircd__io_8h-source.html#l00094">ServerConfig::AdminNick</a>.<div class="fragment"><pre class="fragment"><a name="l00550"></a>00550 {
-<a name="l00551"></a>00551 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
-<a name="l00552"></a>00552 }
+References <a class="el" href="inspircd__io_8h-source.html#l00090">ServerConfig::AdminEmail</a>, <a class="el" href="inspircd__io_8h-source.html#l00085">ServerConfig::AdminName</a>, and <a class="el" href="inspircd__io_8h-source.html#l00095">ServerConfig::AdminNick</a>.<div class="fragment"><pre class="fragment"><a name="l00549"></a>00549 {
+<a name="l00550"></a>00550 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
+<a name="l00551"></a>00551 }
</pre></div>
<p>
</td>
<p>
The <a class="el" href="classServerConfig.html">ServerConfig</a> object contains most of the configuration data of the IRC server, as read from the config file by the core.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00324">324</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00325"></a>00325 {
-<a name="l00326"></a>00326 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>;
-<a name="l00327"></a>00327 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00323">323</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00324"></a>00324 {
+<a name="l00325"></a>00325 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>;
+<a name="l00326"></a>00326 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00539">539</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00538">538</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00074">ServerConfig::Network</a>.<div class="fragment"><pre class="fragment"><a name="l00540"></a>00540 {
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
-<a name="l00542"></a>00542 }
+References <a class="el" href="inspircd__io_8h-source.html#l00075">ServerConfig::Network</a>.<div class="fragment"><pre class="fragment"><a name="l00539"></a>00539 {
+<a name="l00540"></a>00540 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00541"></a>00541 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00544">544</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00543">543</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00079">ServerConfig::ServerDesc</a>.<div class="fragment"><pre class="fragment"><a name="l00545"></a>00545 {
-<a name="l00546"></a>00546 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
-<a name="l00547"></a>00547 }
+References <a class="el" href="inspircd__io_8h-source.html#l00080">ServerConfig::ServerDesc</a>.<div class="fragment"><pre class="fragment"><a name="l00544"></a>00544 {
+<a name="l00545"></a>00545 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
+<a name="l00546"></a>00546 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00534">534</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00533">533</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00068">ServerConfig::ServerName</a>.<div class="fragment"><pre class="fragment"><a name="l00535"></a>00535 {
-<a name="l00536"></a>00536 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
-<a name="l00537"></a>00537 }
+References <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>.<div class="fragment"><pre class="fragment"><a name="l00534"></a>00534 {
+<a name="l00535"></a>00535 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
+<a name="l00536"></a>00536 }
</pre></div>
<p>
</td>
<p>
This function must be here and not a member of userrec or chanrec due to include constraints.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00374">374</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="channels_8cpp-source.html#l00187">chanrec::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
-<a name="l00377"></a>00377 userl.clear();
-<a name="l00378"></a>00378 std::vector<char*> *list = chan-><a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
-<a name="l00379"></a>00379 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
-<a name="l00380"></a>00380 {
-<a name="l00381"></a>00381 <span class="keywordtype">char</span>* o = *i;
-<a name="l00382"></a>00382 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
-<a name="l00383"></a>00383 }
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> userl;
-<a name="l00385"></a>00385 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00373">373</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="channels_8cpp-source.html#l00186">chanrec::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00374"></a>00374 {
+<a name="l00375"></a>00375 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
+<a name="l00376"></a>00376 userl.clear();
+<a name="l00377"></a>00377 std::vector<char*> *list = chan-><a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
+<a name="l00378"></a>00378 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
+<a name="l00379"></a>00379 {
+<a name="l00380"></a>00380 <span class="keywordtype">char</span>* o = *i;
+<a name="l00381"></a>00381 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
+<a name="l00382"></a>00382 }
+<a name="l00383"></a>00383 <span class="keywordflow">return</span> userl;
+<a name="l00384"></a>00384 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00329">329</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00328">328</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd::GetVersionString()</a>.<div class="fragment"><pre class="fragment"><a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
-<a name="l00332"></a>00332 }
+References <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd::GetVersionString()</a>.<div class="fragment"><pre class="fragment"><a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
+<a name="l00331"></a>00331 }
</pre></div>
<p>
</td>
<p>
Nicks for unregistered connections will return false.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00504">504</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00503">503</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick()</a>.<div class="fragment"><pre class="fragment"><a name="l00505"></a>00505 {
-<a name="l00506"></a>00506 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
-<a name="l00507"></a>00507 }
+References <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick()</a>.<div class="fragment"><pre class="fragment"><a name="l00504"></a>00504 {
+<a name="l00505"></a>00505 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
+<a name="l00506"></a>00506 }
</pre></div>
<p>
</td>
<p>
This function will return true or false to indicate if user 'User' is on channel 'Chan'.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00529">529</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00528">528</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00530"></a>00530 {
-<a name="l00531"></a>00531 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(User,Chan);
-<a name="l00532"></a>00532 }
+References <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00529"></a>00529 {
+<a name="l00530"></a>00530 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(User,Chan);
+<a name="l00531"></a>00531 }
</pre></div>
<p>
</td>
<p>
ULined servers have extra privilages. They are allowed to change nicknames on remote servers, change modes of clients which are on remote servers and set modes of channels where there are no channel operators for that channel on the ulined server, amongst other things. Ulined server data is also broadcast across the mesh at all times as opposed to selectively messaged in the case of normal servers, as many ulined server types (such as services) do not support meshed links and must operate in this manner.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00396">396</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00395">395</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00397"></a>00397 {
-<a name="l00398"></a>00398 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(server.c_str());
-<a name="l00399"></a>00399 }
+References <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(server.c_str());
+<a name="l00398"></a>00398 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00695">695</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00696"></a>00696 {
-<a name="l00697"></a>00697 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
-<a name="l00698"></a>00698 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
-<a name="l00699"></a>00699 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00700"></a>00700 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
-<a name="l00701"></a>00701 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00702"></a>00702 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00703"></a>00703 <span class="keywordflow">if</span> (dest[i] < 32)
-<a name="l00704"></a>00704 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00705"></a>00705 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00706"></a>00706 <span class="keywordflow">if</span> (dest[i] > 126)
-<a name="l00707"></a>00707 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00708"></a>00708 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
-<a name="l00709"></a>00709 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00710"></a>00710 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
-<a name="l00711"></a>00711 c++;
-<a name="l00712"></a>00712 <span class="keywordflow">if</span> (c>1)
-<a name="l00713"></a>00713 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00714"></a>00714 c = 0;
-<a name="l00715"></a>00715 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00716"></a>00716 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
-<a name="l00717"></a>00717 c++;
-<a name="l00718"></a>00718 <span class="keywordflow">if</span> (c>1)
-<a name="l00719"></a>00719 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00720"></a>00720
-<a name="l00721"></a>00721 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00722"></a>00722 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00694">694</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00695"></a>00695 {
+<a name="l00696"></a>00696 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+<a name="l00697"></a>00697 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+<a name="l00698"></a>00698 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00699"></a>00699 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+<a name="l00700"></a>00700 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00701"></a>00701 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00702"></a>00702 <span class="keywordflow">if</span> (dest[i] < 32)
+<a name="l00703"></a>00703 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00704"></a>00704 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00705"></a>00705 <span class="keywordflow">if</span> (dest[i] > 126)
+<a name="l00706"></a>00706 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00707"></a>00707 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
+<a name="l00708"></a>00708 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00709"></a>00709 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+<a name="l00710"></a>00710 c++;
+<a name="l00711"></a>00711 <span class="keywordflow">if</span> (c>1)
+<a name="l00712"></a>00712 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00713"></a>00713 c = 0;
+<a name="l00714"></a>00714 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00715"></a>00715 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+<a name="l00716"></a>00716 c++;
+<a name="l00717"></a>00717 <span class="keywordflow">if</span> (c>1)
+<a name="l00718"></a>00718 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00719"></a>00719
+<a name="l00720"></a>00720 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00721"></a>00721 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00406">406</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00405">405</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd()</a>.<div class="fragment"><pre class="fragment"><a name="l00407"></a>00407 {
-<a name="l00408"></a>00408 <span class="keywordflow">return</span> <a class="code" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a>(commandname.c_str(), pcnt, user);
-<a name="l00409"></a>00409 }
+References <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>.<div class="fragment"><pre class="fragment"><a name="l00406"></a>00406 {
+<a name="l00407"></a>00407 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->IsValidCommand(commandname, pcnt, user);
+<a name="l00408"></a>00408 }
</pre></div>
<p>
</td>
<p>
This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00364">364</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00363">363</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00365"></a>00365 {
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
-<a name="l00367"></a>00367 }
+References <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00364"></a>00364 {
+<a name="l00365"></a>00365 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
+<a name="l00366"></a>00366 }
</pre></div>
<p>
</td>
<p>
This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00411">411</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00410">410</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00414"></a>00414 }
+References <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00411"></a>00411 {
+<a name="l00412"></a>00412 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00413"></a>00413 }
</pre></div>
<p>
</td>
<p>
Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00351">351</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00352"></a>00352 {
-<a name="l00353"></a>00353 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-<a name="l00354"></a>00354 strlcpy(literal,sliteral.c_str(),MAXBUF);
-<a name="l00355"></a>00355 strlcpy(pattern,spattern.c_str(),MAXBUF);
-<a name="l00356"></a>00356 <span class="keywordflow">return</span> match(literal,pattern);
-<a name="l00357"></a>00357 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00350">350</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00351"></a>00351 {
+<a name="l00352"></a>00352 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+<a name="l00353"></a>00353 strlcpy(literal,sliteral.c_str(),MAXBUF);
+<a name="l00354"></a>00354 strlcpy(pattern,spattern.c_str(),MAXBUF);
+<a name="l00355"></a>00355 <span class="keywordflow">return</span> match(literal,pattern);
+<a name="l00356"></a>00356 }
</pre></div>
<p>
</td>
<p>
This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00369">369</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00368">368</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00370"></a>00370 {
-<a name="l00371"></a>00371 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
-<a name="l00372"></a>00372 }
+References <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00369"></a>00369 {
+<a name="l00370"></a>00370 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+<a name="l00371"></a>00371 }
</pre></div>
<p>
</td>
<p>
The user in 'alive' is booted off the server with the given message. The user referred to by 'zombie' should have previously been locked with Server::ZombifyUser, otherwise stale sockets and file descriptor leaks can occur. After this call, the pointer to alive will be invalid, and the pointer to zombie will be equivalent in effect to the old pointer to alive.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00610">610</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="users_8cpp-source.html#l00232">userrec::ClearBuffer()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00101">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">userrec::ident</a>, <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00611"></a>00611 {
-<a name="l00612"></a>00612 zombie-><a class="code" href="classconnection.html#fd">fd</a> = alive-><a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00613"></a>00613 alive-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
-<a name="l00614"></a>00614 alive-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00615"></a>00615 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,alive-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,alive-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00616"></a>00616 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
-<a name="l00617"></a>00617 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[zombie-><a class="code" href="classconnection.html#fd">fd</a>] = zombie;
-<a name="l00618"></a>00618 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < zombie->chans.size(); i++)
-<a name="l00619"></a>00619 {
-<a name="l00620"></a>00620 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
-<a name="l00621"></a>00621 {
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel->name)
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
-<a name="l00625"></a>00625 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00626"></a>00626 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>)
-<a name="l00627"></a>00627 {
-<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>);
-<a name="l00629"></a>00629 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>, Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>);
-<a name="l00630"></a>00630 }
-<a name="l00631"></a>00631 userlist(zombie,Ptr);
-<a name="l00632"></a>00632 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00633"></a>00633
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635 }
-<a name="l00636"></a>00636 }
-<a name="l00637"></a>00637 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00638"></a>00638 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00609">609</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="users_8cpp-source.html#l00253">userrec::ClearBuffer()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00102">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00610"></a>00610 {
+<a name="l00611"></a>00611 zombie-><a class="code" href="classconnection.html#fd">fd</a> = alive-><a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00612"></a>00612 alive-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
+<a name="l00613"></a>00613 alive-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00614"></a>00614 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,alive-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,alive-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00615"></a>00615 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
+<a name="l00616"></a>00616 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[zombie-><a class="code" href="classconnection.html#fd">fd</a>] = zombie;
+<a name="l00617"></a>00617 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < zombie->chans.size(); i++)
+<a name="l00618"></a>00618 {
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
+<a name="l00620"></a>00620 {
+<a name="l00621"></a>00621 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel->name)
+<a name="l00622"></a>00622 {
+<a name="l00623"></a>00623 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
+<a name="l00624"></a>00624 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>);
+<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>, Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>);
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 userlist(zombie,Ptr);
+<a name="l00631"></a>00631 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 }
+<a name="l00634"></a>00634 }
+<a name="l00635"></a>00635 }
+<a name="l00636"></a>00636 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00637"></a>00637 }
</pre></div>
<p>
</td>
WARNING!<p>
Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00391">391</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00390">390</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00392"></a>00392 {
-<a name="l00393"></a>00393 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
-<a name="l00394"></a>00394 }
+References <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00391"></a>00391 {
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
+<a name="l00393"></a>00393 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00318">318</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00317">317</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">ServerConfig::Read()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
-<a name="l00321"></a>00321 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
-<a name="l00322"></a>00322 }
+References <a class="el" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">ServerConfig::Read()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
+<a name="l00320"></a>00320 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
+<a name="l00321"></a>00321 }
</pre></div>
<p>
</td>
<p>
This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00426">426</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00425">425</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00427"></a>00427 {
-<a name="l00428"></a>00428 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00429"></a>00429 }
+References <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00426"></a>00426 {
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00428"></a>00428 }
</pre></div>
<p>
</td>
<p>
This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00460">460</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender()</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00461"></a>00461 {
-<a name="l00462"></a>00462 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00463"></a>00463 {
-<a name="l00464"></a>00464 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 <span class="keywordflow">else</span>
-<a name="l00467"></a>00467 {
-<a name="l00468"></a>00468 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00469"></a>00469 }
-<a name="l00470"></a>00470 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00459">459</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender()</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
+<a name="l00461"></a>00461 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00462"></a>00462 {
+<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465 <span class="keywordflow">else</span>
+<a name="l00466"></a>00466 {
+<a name="l00467"></a>00467 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469 }
</pre></div>
<p>
</td>
<p>
This can be used to send server notices to a group of users.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00455">455</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00456"></a>00456 {
-<a name="l00457"></a>00457 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
-<a name="l00458"></a>00458 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00454">454</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00455"></a>00455 {
+<a name="l00456"></a>00456 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
+<a name="l00457"></a>00457 }
</pre></div>
<p>
</td>
<p>
This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00477">477</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.<div class="fragment"><pre class="fragment"><a name="l00478"></a>00478 {
-<a name="l00479"></a>00479 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00480"></a>00480 {
-<a name="l00481"></a>00481 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00482"></a>00482 }
-<a name="l00483"></a>00483 <span class="keywordflow">else</span>
-<a name="l00484"></a>00484 {
-<a name="l00485"></a>00485 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00486"></a>00486 }
-<a name="l00487"></a>00487 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00476">476</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.<div class="fragment"><pre class="fragment"><a name="l00477"></a>00477 {
+<a name="l00478"></a>00478 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00479"></a>00479 {
+<a name="l00480"></a>00480 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00481"></a>00481 }
+<a name="l00482"></a>00482 <span class="keywordflow">else</span>
+<a name="l00483"></a>00483 {
+<a name="l00484"></a>00484 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486 }
</pre></div>
<p>
</td>
<p>
This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00436">436</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00435">435</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>.<div class="fragment"><pre class="fragment"><a name="l00437"></a>00437 {
-<a name="l00438"></a>00438 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00439"></a>00439 }
+References <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>.<div class="fragment"><pre class="fragment"><a name="l00436"></a>00436 {
+<a name="l00437"></a>00437 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00438"></a>00438 }
</pre></div>
<p>
</td>
Srv->SendMode(modes,3,user);<p>
The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00421">421</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00420">420</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode()</a>.<div class="fragment"><pre class="fragment"><a name="l00422"></a>00422 {
-<a name="l00423"></a>00423 <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(parameters,pcnt,user);
-<a name="l00424"></a>00424 }
+References <a class="el" href="inspircd_8h-source.html#l00109">InspIRCd::ModeGrok</a>, and <a class="el" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ModeParser::ServerMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#ModeGrok">ModeGrok</a>-><a class="code" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ServerMode</a>(parameters,pcnt,user);
+<a name="l00423"></a>00423 }
</pre></div>
<p>
</td>
<p>
This method sends a server notice to all opers with the usermode +s.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00346">346</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00345">345</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00347"></a>00347 {
-<a name="l00348"></a>00348 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00349"></a>00349 }
+References <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00346"></a>00346 {
+<a name="l00347"></a>00347 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00348"></a>00348 }
</pre></div>
<p>
</td>
<p>
This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00431">431</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00430">430</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00432"></a>00432 {
-<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00434"></a>00434 }
+References <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00433"></a>00433 }
</pre></div>
<p>
</td>
:localserver TEXT<p>
Which is useful for numerics and server notices to single users, etc.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00441">441</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo()</a>.<div class="fragment"><pre class="fragment"><a name="l00442"></a>00442 {
-<a name="l00443"></a>00443 <span class="keywordflow">if</span> (!Source)
-<a name="l00444"></a>00444 {
-<a name="l00445"></a>00445 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-<a name="l00446"></a>00446 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Dest-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str());
-<a name="l00447"></a>00447 }
-<a name="l00448"></a>00448 <span class="keywordflow">else</span>
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 <span class="comment">// otherwise it comes from the user specified</span>
-<a name="l00451"></a>00451 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00440">440</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo()</a>.<div class="fragment"><pre class="fragment"><a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <span class="keywordflow">if</span> (!Source)
+<a name="l00443"></a>00443 {
+<a name="l00444"></a>00444 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+<a name="l00445"></a>00445 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Dest-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str());
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447 <span class="keywordflow">else</span>
+<a name="l00448"></a>00448 {
+<a name="l00449"></a>00449 <span class="comment">// otherwise it comes from the user specified</span>
+<a name="l00450"></a>00450 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00451"></a>00451 }
+<a name="l00452"></a>00452 }
</pre></div>
<p>
</td>
Serv->SendToModeMask("xi", WM_OR, "m00");<p>
Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00359">359</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00362"></a>00362 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00358">358</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00359"></a>00359 {
+<a name="l00360"></a>00360 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00361"></a>00361 }
</pre></div>
<p>
</td>
<p>
This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00489">489</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00488">488</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps()</a>.<div class="fragment"><pre class="fragment"><a name="l00490"></a>00490 {
-<a name="l00491"></a>00491 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00492"></a>00492 }
+References <a class="el" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps()</a>.<div class="fragment"><pre class="fragment"><a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00491"></a>00491 }
</pre></div>
<p>
</td>
<p>
When you call this function, the user's file descriptor will be replaced with the value of FD_MAGIC_NUMBER and their old file descriptor will be closed. This idle client will remain until it is restored with a valid file descriptor, or is removed from IRC by an operator After this call, the pointer to user will be invalid.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00598">598</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="users_8cpp-source.html#l00232">userrec::ClearBuffer()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00101">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">userrec::ident</a>, and <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00599"></a>00599 {
-<a name="l00600"></a>00600 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00601"></a>00601 user-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
-<a name="l00602"></a>00602 user-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00603"></a>00603 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,message.c_str());
-<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
-<a name="l00605"></a>00605 shutdown(old_fd,2);
-<a name="l00606"></a>00606 close(old_fd);
-<a name="l00607"></a>00607 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00608"></a>00608 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00597">597</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00253">userrec::ClearBuffer()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00102">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, and <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00598"></a>00598 {
+<a name="l00599"></a>00599 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00600"></a>00600 user-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
+<a name="l00601"></a>00601 user-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00602"></a>00602 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,message.c_str());
+<a name="l00603"></a>00603 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
+<a name="l00604"></a>00604 shutdown(old_fd,2);
+<a name="l00605"></a>00605 close(old_fd);
+<a name="l00606"></a>00606 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00607"></a>00607 }
</pre></div>
<p>
</td>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>ServerConfig Member List</h1>This is the complete list of members for <a class="el" href="classServerConfig.html">ServerConfig</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">AddIOHook</a>(int port, Module *iomod)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">addrs</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(char *tag, char *var, int index, char *result, std::stringstream *config)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValueEnum</a>(char *tag, std::stringstream *config)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#debugging">debugging</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">DelIOHook</a>(int port)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#DieDelay">DieDelay</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#diepass_5BMAXBUF_5D">diepass</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#DieValue_5BMAXBUF_5D">DieValue</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(std::stringstream *config_f, const char *tag)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(std::stringstream *config, const char *tag, int index)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a>(char *buffer, size_t maxsize, FILE *&file)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(int port)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#include_5Fstack">include_stack</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#IOHookModule">IOHookModule</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(const char *filename, std::stringstream *target, std::stringstream *errorstream)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#log_5Ffile">log_file</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#LogLevel">LogLevel</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(bool bail, userrec *user)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(std::stringstream *config_f, const char *tag, const char *var, int index, char *result)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#restartpass_5BMAXBUF_5D">restartpass</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#RULES">RULES</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a>()</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#SoftLimit">SoftLimit</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#unlimitcore">unlimitcore</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ServerConfig:<p><center><img src="classServerConfig__coll__graph.gif" border="0" usemap="#ServerConfig__coll__map" alt="Collaboration graph"></center>
<map name="ServerConfig__coll__map">
-<area href="classclassbase.html" shape="rect" coords="38,12,118,39" alt="">
+<area href="classclassbase.html" shape="rect" coords="40,11,120,37" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classServerConfig-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a> (std::stringstream *config, const char *tag, int index)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classModule.html">Module</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a> (int port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">AddIOHook</a> (int port, <a class="el" href="classModule.html">Module</a> *iomod)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">DelIOHook</a> (int port)</td></tr>
+
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a> [MAXBUF]</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#ports_5B_32_35_35_5D">ports</a> [255]</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A list of ports which the server is listening on. <a href="#ports_5B_32_35_35_5D"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::map< int, <a class="el" href="classModule.html">Module</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#IOHookModule">IOHookModule</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A list of ports claimed by IO Modules. <a href="#IOHookModule"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a> (char *buffer, size_t maxsize, FILE *&file)</td></tr>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00039">39</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00040">40</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="ServerConfig_28_29"></a><!-- doxytag: member="ServerConfig::ServerConfig" ref="ServerConfig_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29"></a><!-- doxytag: member="ServerConfig::AddIOHook" ref="AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29" args="(int port, Module *iomod)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">bool ServerConfig::AddIOHook </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">int </td>
+ <td class="mdname" nowrap> <em>port</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="classModule.html">Module</a> * </td>
+ <td class="mdname" nowrap> <em>iomod</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
<a class="anchor" name="ClearStack_28_29"></a><!-- doxytag: member="ServerConfig::ClearStack" ref="ClearStack_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader::ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader::ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29"></a><!-- doxytag: member="ServerConfig::ConfProcess" ref="ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29" args="(char *buffer, long linenumber, std::stringstream *errorstream, bool &error, std::string filename)" --><p>
<p>
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPermission()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00165">userrec::HasPermission()</a>. </td>
</tr>
</table>
<a class="anchor" name="ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29"></a><!-- doxytag: member="ServerConfig::ConfValueEnum" ref="ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29" args="(char *tag, std::stringstream *config)" --><p>
</td>
<td>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="DelIOHook_28int_20port_29"></a><!-- doxytag: member="ServerConfig::DelIOHook" ref="DelIOHook_28int_20port_29" args="(int port)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">bool ServerConfig::DelIOHook </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">int </td>
+ <td class="mdname1" valign="top" nowrap> <em>port</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
<p>
</td>
</tr>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00868">ConfigReader::Enumerate()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00867">ConfigReader::Enumerate()</a>. </td>
</tr>
</table>
<a class="anchor" name="EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29"></a><!-- doxytag: member="ServerConfig::EnumValues" ref="EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29" args="(std::stringstream *config, const char *tag, int index)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00873">ConfigReader::EnumerateValues()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00872">ConfigReader::EnumerateValues()</a>. </td>
</tr>
</table>
<a class="anchor" name="fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29"></a><!-- doxytag: member="ServerConfig::fgets_safe" ref="fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29" args="(char *buffer, size_t maxsize, FILE *&file)" --><p>
it can read both windows and UNIX style linefeeds transparently. </td>
</tr>
</table>
+<a class="anchor" name="GetIOHook_28int_20port_29"></a><!-- doxytag: member="ServerConfig::GetIOHook" ref="GetIOHook_28int_20port_29" args="(int port)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classModule.html">Module</a>* ServerConfig::GetIOHook </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">int </td>
+ <td class="mdname1" valign="top" nowrap> <em>port</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29"></a><!-- doxytag: member="ServerConfig::LoadConf" ref="LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29" args="(const char *filename, std::stringstream *target, std::stringstream *errorstream)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader::ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader::ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="Read_28bool_20bail_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="ServerConfig::Read" ref="Read_28bool_20bail_2C_20userrec_20_2Auser_29" args="(bool bail, userrec *user)" --><p>
<p>
All other methods should be used only by the core.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00318">Server::RehashServer()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00317">Server::RehashServer()</a>. </td>
</tr>
</table>
<a class="anchor" name="ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29"></a><!-- doxytag: member="ServerConfig::ReadConf" ref="ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29" args="(std::stringstream *config_f, const char *tag, const char *var, int index, char *result)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00782">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00766">ConfigReader::ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00781">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00765">ConfigReader::ReadValue()</a>. </td>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00216">216</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00217">217</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="AdminEmail_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::AdminEmail" ref="AdminEmail_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00089">89</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00090">90</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00549">Server::GetAdmin()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00548">Server::GetAdmin()</a>. </td>
</tr>
</table>
<a class="anchor" name="AdminName_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::AdminName" ref="AdminName_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00084">84</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00085">85</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00549">Server::GetAdmin()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00548">Server::GetAdmin()</a>. </td>
</tr>
</table>
<a class="anchor" name="AdminNick_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::AdminNick" ref="AdminNick_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00094">94</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00095">95</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00549">Server::GetAdmin()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00548">Server::GetAdmin()</a>. </td>
</tr>
</table>
<a class="anchor" name="AllowHalfop"></a><!-- doxytag: member="ServerConfig::AllowHalfop" ref="AllowHalfop" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00171">171</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00172">172</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Classes"></a><!-- doxytag: member="ServerConfig::Classes" ref="Classes" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00242">242</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00243">243</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="config_5Ff"></a><!-- doxytag: member="ServerConfig::config_f" ref="config_5Ff" args="" --><p>
<p>
You should pass this to any configuration methods of this class, and not access it directly. It is recommended that modules use <a class="el" href="classConfigReader.html">ConfigReader</a> instead which provides a simpler abstraction of configuration files.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00238">238</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00239">239</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPermission()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00165">userrec::HasPermission()</a>. </td>
</tr>
</table>
<a class="anchor" name="debugging"></a><!-- doxytag: member="ServerConfig::debugging" ref="debugging" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00202">202</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00203">203</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="DieDelay"></a><!-- doxytag: member="ServerConfig::DieDelay" ref="DieDelay" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00211">211</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00212">212</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="diepass_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::diepass" ref="diepass_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00098">98</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00099">99</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="DieValue_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::DieValue" ref="DieValue_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00121">121</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00122">122</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="DisabledCommands_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::DisabledCommands" ref="DisabledCommands_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00131">131</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00132">132</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="dns_5Ftimeout"></a><!-- doxytag: member="ServerConfig::dns_timeout" ref="dns_5Ftimeout" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00176">176</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00177">177</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="DNSServer_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::DNSServer" ref="DNSServer_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00125">125</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00126">126</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="include_5Fstack"></a><!-- doxytag: member="ServerConfig::include_stack" ref="include_5Fstack" args="" --><p>
<p>
This is used to make sure that no files are recursively included.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00047">47</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00048">48</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IOHookModule"></a><!-- doxytag: member="ServerConfig::IOHookModule" ref="IOHookModule" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::map<int,<a class="el" href="classModule.html">Module</a>*> <a class="el" href="classServerConfig.html#IOHookModule">ServerConfig::IOHookModule</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+A list of ports claimed by IO Modules.
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00256">256</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="log_5Ffile"></a><!-- doxytag: member="ServerConfig::log_file" ref="log_5Ffile" args="" --><p>
<p>
If this value is NULL, the log file is not open, probably due to a permissions error on startup (this should not happen in normal operation!).
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00151">151</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00152">152</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="LogLevel"></a><!-- doxytag: member="ServerConfig::LogLevel" ref="LogLevel" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00206">206</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00207">207</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MaxConn"></a><!-- doxytag: member="ServerConfig::MaxConn" ref="MaxConn" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00187">187</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00188">188</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MaxWhoResults"></a><!-- doxytag: member="ServerConfig::MaxWhoResults" ref="MaxWhoResults" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00198">198</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00199">199</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ModPath_5B_31_30_32_34_5D"></a><!-- doxytag: member="ServerConfig::ModPath" ref="ModPath_5B_31_30_32_34_5D" args="[1024]" --><p>
<p>
This is either set at compile time, or overridden in the configuration file via the <options> tag.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00138">138</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00139">139</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="module_5Fnames"></a><!-- doxytag: member="ServerConfig::module_names" ref="module_5Fnames" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00247">247</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00248">248</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindModule()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00723">Server::FindModule()</a>. </td>
</tr>
</table>
<a class="anchor" name="MOTD"></a><!-- doxytag: member="ServerConfig::MOTD" ref="MOTD" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00220">220</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00221">221</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="motd_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::motd" ref="motd_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00107">107</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00108">108</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MyExecutable_5B_31_30_32_34_5D"></a><!-- doxytag: member="ServerConfig::MyExecutable" ref="MyExecutable_5B_31_30_32_34_5D" args="[1024]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00143">143</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00144">144</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="NetBufferSize"></a><!-- doxytag: member="ServerConfig::NetBufferSize" ref="NetBufferSize" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00182">182</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00183">183</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Network_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::Network" ref="Network_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00074">74</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00075">75</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00539">Server::GetNetworkName()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00538">Server::GetNetworkName()</a>. </td>
</tr>
</table>
<a class="anchor" name="nofork"></a><!-- doxytag: member="ServerConfig::nofork" ref="nofork" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00158">158</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00159">159</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="PID_5B_31_30_32_34_5D"></a><!-- doxytag: member="ServerConfig::PID" ref="PID_5B_31_30_32_34_5D" args="[1024]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00229">229</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00230">230</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ports_5B_32_35_35_5D"></a><!-- doxytag: member="ServerConfig::ports" ref="ports_5B_32_35_35_5D" args="[255]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00251">251</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00252">252</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="PrefixQuit_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::PrefixQuit" ref="PrefixQuit_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00116">116</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00117">117</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="restartpass_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::restartpass" ref="restartpass_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00102">102</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00103">103</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="RULES"></a><!-- doxytag: member="ServerConfig::RULES" ref="RULES" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00224">224</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00225">225</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="rules_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::rules" ref="rules_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00112">112</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00113">113</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ServerDesc_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::ServerDesc" ref="ServerDesc_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00079">79</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00080">80</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00544">Server::GetServerDescription()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00543">Server::GetServerDescription()</a>. </td>
</tr>
</table>
<a class="anchor" name="ServerName_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::ServerName" ref="ServerName_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00068">68</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00069">69</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00534">Server::GetServerName()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="modules_8cpp-source.html#l00533">Server::GetServerName()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="SoftLimit"></a><!-- doxytag: member="ServerConfig::SoftLimit" ref="SoftLimit" args="" --><p>
<p>
The IRC server will not allow more than this number of local users.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00193">193</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00194">194</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="unlimitcore"></a><!-- doxytag: member="ServerConfig::unlimitcore" ref="unlimitcore" args="" --><p>
<p>
This is often used when debugging.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00166">166</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00167">167</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $classclassbase.html 38,12 118,39
+rect $classclassbase.html 40,11 120,37
-ccb417531b2d5c8c500f80e926167613
\ No newline at end of file
+6622bf16a5d6e3d1fa66d187c3430dae
\ No newline at end of file
<tr class="memlist"><td><a class="el" href="classSocketEngine.html#ts">ts</a></td><td><a class="el" href="classSocketEngine.html">SocketEngine</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classSocketEngine.html#Wait_28std_3A_3Avector_3C_20int_20_3E_20_26fdlist_29">Wait</a>(std::vector< int > &fdlist)</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classSocketEngine.html#_7ESocketEngine_28_29">~SocketEngine</a>()</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00035">35</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00036"></a>00036 {
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00036"></a>00036 {
<a name="l00037"></a>00037 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SocketEngine::SocketEngine()"</span>);
<a name="l00038"></a>00038 <span class="preprocessor">#ifdef USE_EPOLL</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span> <a class="code" href="classSocketEngine.html#EngineHandle">EngineHandle</a> = epoll_create(65535);
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00046">46</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00047"></a>00047 {
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00047"></a>00047 {
<a name="l00048"></a>00048 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SocketEngine::~SocketEngine()"</span>);
<a name="l00049"></a>00049 <span class="preprocessor">#ifdef USE_EPOLL</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span> close(<a class="code" href="classSocketEngine.html#EngineHandle">EngineHandle</a>);
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00065">65</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00053">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00217">InspSocket::Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00066"></a>00066 {
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="socket_8cpp-source.html#l00050">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00066"></a>00066 {
<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((fd < 0) || (fd > 65535))
<a name="l00068"></a>00068 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00069"></a>00069 this-><a class="code" href="classSocketEngine.html#fds">fds</a>.push_back(fd);
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00103">103</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">InspSocket::Poll()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00104"></a>00104 {
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00104"></a>00104 {
<a name="l00105"></a>00105 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SocketEngine::DelFd(%d)"</span>,fd);
<a name="l00106"></a>00106
<a name="l00107"></a>00107 <span class="keywordflow">if</span> ((fd < 0) || (fd > 65535))
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="socketengine_8h-source.html">socketengine.h</a><li><a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classVersion.html#Revision">Revision</a></td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a>(int major, int minor, int revision, int build, int flags)</td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00113">113</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00131">131</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29"></a><!-- doxytag: member="Version::Version" ref="Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29" args="(int major, int minor, int revision, int build, int flags)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00159">159</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00159"></a>00159 : <a class="code" href="classVersion.html#Major">Major</a>(major), <a class="code" href="classVersion.html#Minor">Minor</a>(minor), <a class="code" href="classVersion.html#Revision">Revision</a>(revision), <a class="code" href="classVersion.html#Build">Build</a>(build), <a class="code" href="classVersion.html#Flags">Flags</a>(flags) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00158">158</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00158"></a>00158 : <a class="code" href="classVersion.html#Major">Major</a>(major), <a class="code" href="classVersion.html#Minor">Minor</a>(minor), <a class="code" href="classVersion.html#Revision">Revision</a>(revision), <a class="code" href="classVersion.html#Build">Build</a>(build), <a class="code" href="classVersion.html#Flags">Flags</a>(flags) { };
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Flags"></a><!-- doxytag: member="Version::Flags" ref="Flags" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Major"></a><!-- doxytag: member="Version::Major" ref="Major" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Minor"></a><!-- doxytag: member="Version::Minor" ref="Minor" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Revision"></a><!-- doxytag: member="Version::Revision" ref="Revision" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a></td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a></td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classWhoWasUser.html#signon">signon</a></td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00332">332</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00336">336</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="dhost_5B_31_36_30_5D"></a><!-- doxytag: member="WhoWasUser::dhost" ref="dhost_5B_31_36_30_5D" args="[160]" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00337">337</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00341">341</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="fullname_5BMAXGECOS_2B_31_5D"></a><!-- doxytag: member="WhoWasUser::fullname" ref="fullname_5BMAXGECOS_2B_31_5D" args="[MAXGECOS+1]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00339">339</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00343">343</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="host_5B_31_36_30_5D"></a><!-- doxytag: member="WhoWasUser::host" ref="host_5B_31_36_30_5D" args="[160]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00338">338</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00342">342</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="ident_5BIDENTMAX_2B_31_5D"></a><!-- doxytag: member="WhoWasUser::ident" ref="ident_5BIDENTMAX_2B_31_5D" args="[IDENTMAX+1]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00336">336</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00340">340</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="nick_5BNICKMAX_5D"></a><!-- doxytag: member="WhoWasUser::nick" ref="nick_5BNICKMAX_5D" args="[NICKMAX]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00335">335</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00339">339</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="server_5B_32_35_36_5D"></a><!-- doxytag: member="WhoWasUser::server" ref="server_5B_32_35_36_5D" args="[256]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00340">340</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00344">344</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="signon"></a><!-- doxytag: member="WhoWasUser::signon" ref="signon" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00341">341</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00345">345</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classchanrec.html#topicset">topicset</a></td><td><a class="el" href="classchanrec.html">chanrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classchanrec.html#_7Echanrec_28_29">~chanrec</a>()</td><td><a class="el" href="classchanrec.html">chanrec</a></td><td><code> [inline, virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00074">74</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00147">binarymodes</a>, <a class="el" href="channels_8h-source.html#l00125">created</a>, <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="channels_8h-source.html#l00143">key</a>, <a class="el" href="channels_8h-source.html#l00138">limit</a>, <a class="el" href="channels_8h-source.html#l00108">name</a>, <a class="el" href="channels_8h-source.html#l00133">setby</a>, <a class="el" href="channels_8h-source.html#l00122">topic</a>, and <a class="el" href="channels_8h-source.html#l00129">topicset</a>.<div class="fragment"><pre class="fragment"><a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
-<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
-<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
-<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
-<a name="l00080"></a>00080 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
-<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
-<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
-<a name="l00083"></a>00083 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
-<a name="l00084"></a>00084 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00073">73</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00147">binarymodes</a>, <a class="el" href="channels_8h-source.html#l00125">created</a>, <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="channels_8h-source.html#l00143">key</a>, <a class="el" href="channels_8h-source.html#l00138">limit</a>, <a class="el" href="channels_8h-source.html#l00108">name</a>, <a class="el" href="channels_8h-source.html#l00133">setby</a>, <a class="el" href="channels_8h-source.html#l00122">topic</a>, and <a class="el" href="channels_8h-source.html#l00129">topicset</a>.<div class="fragment"><pre class="fragment"><a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
+<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
+<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
+<a name="l00080"></a>00080 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
+<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
+<a name="l00083"></a>00083 }
</pre></div>
<p>
</td>
</dl>
The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00167">167</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+Definition at line <a class="el" href="channels_8cpp-source.html#l00166">166</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
-<a name="l00170"></a>00170 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
-<a name="l00171"></a>00171 }
+Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
+<a name="l00169"></a>00169 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
+<a name="l00170"></a>00170 }
</pre></div>
<p>
</td>
</dl>
The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00173">173</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8h-source.html#l00108">name</a>.
-<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keywordflow">for</span> (std::vector<char*>::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a < <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (*a == castuser)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
-<a name="l00180"></a>00180 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
-<a name="l00181"></a>00181 <span class="keywordflow">return</span>;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00185"></a>00185 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00172">172</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8h-source.html#l00108">name</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keywordflow">for</span> (std::vector<char*>::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a < <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (*a == castuser)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
+<a name="l00179"></a>00179 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
+<a name="l00180"></a>00180 <span class="keywordflow">return</span>;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00184"></a>00184 }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>The parameter for this mode is returned, or an empty string</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00147">147</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8cpp-source.html#l00070">custom_mode_params</a>.<div class="fragment"><pre class="fragment"><a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> i->parameter;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00160"></a>00160 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00146">146</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8cpp-source.html#l00069">custom_mode_params</a>.<div class="fragment"><pre class="fragment"><a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 <span class="keywordflow">return</span> i->parameter;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00159"></a>00159 }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>The number of users on this channel</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00162">162</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> (this->internal_userlist.size());
-<a name="l00165"></a>00165 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00161">161</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> (this->internal_userlist.size());
+<a name="l00164"></a>00164 }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>This function returns a vector of userrec pointers, each of which has been casted to char* to prevent circular references</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00187">187</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+Definition at line <a class="el" href="channels_8cpp-source.html#l00186">186</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
References <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00374">Server::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> &<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
-<a name="l00190"></a>00190 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00373">Server::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keywordflow">return</span> &<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
+<a name="l00189"></a>00189 }
</pre></div>
<p>
</td>
<dl compact><dt><b>Returns:</b></dt><dd>True if the custom mode is set, false if otherwise</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00142">142</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> (strchr(this->custom_modes,mode));
-<a name="l00145"></a>00145 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00141">141</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keywordflow">return</span> (strchr(this->custom_modes,mode));
+<a name="l00144"></a>00144 }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00086">86</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8cpp-source.html#l00111">SetCustomModeParam()</a>.<div class="fragment"><pre class="fragment"><a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (mode_on) {
-<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
-<a name="l00090"></a>00090 m[0] = mode;
-<a name="l00091"></a>00091 m[1] = <span class="charliteral">'\0'</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!strchr(this->custom_modes,mode))
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> {
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-><a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
-<a name="l00101"></a>00101 <span class="keywordtype">int</span> pos = a.find(mode);
-<a name="l00102"></a>00102 a.erase(pos,1);
-<a name="l00103"></a>00103 strncpy(this->custom_modes,a.c_str(),MAXMODES);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this->custom_modes);
-<a name="l00106"></a>00106 this-><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00085">85</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8cpp-source.html#l00110">SetCustomModeParam()</a>.<div class="fragment"><pre class="fragment"><a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (mode_on) {
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
+<a name="l00089"></a>00089 m[0] = mode;
+<a name="l00090"></a>00090 m[1] = <span class="charliteral">'\0'</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (!strchr(this->custom_modes,mode))
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keywordflow">else</span> {
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-><a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> pos = a.find(mode);
+<a name="l00101"></a>00101 a.erase(pos,1);
+<a name="l00102"></a>00102 strncpy(this->custom_modes,a.c_str(),MAXMODES);
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this->custom_modes);
+<a name="l00105"></a>00105 this-><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 }
</pre></div>
<p>
</td>
</dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00111">111</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00084">ModeParameter::channel</a>, <a class="el" href="channels_8cpp-source.html#l00070">custom_mode_params</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00082">ModeParameter::mode</a>, and <a class="el" href="channels_8h-source.html#l00083">ModeParameter::parameter</a>.
-<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00086">SetCustomMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00112"></a>00112 {
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
-<a name="l00115"></a>00115 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
-<a name="l00116"></a>00116 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
-<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this->name,CHANMAX);
-<a name="l00118"></a>00118 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (mode_on)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
-<a name="l00122"></a>00122 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 <span class="keywordflow">else</span>
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
-<a name="l00133"></a>00133 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
-<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00110">110</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00084">ModeParameter::channel</a>, <a class="el" href="channels_8cpp-source.html#l00069">custom_mode_params</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00082">ModeParameter::mode</a>, and <a class="el" href="channels_8h-source.html#l00083">ModeParameter::parameter</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00085">SetCustomMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00111"></a>00111 {
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
+<a name="l00114"></a>00114 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
+<a name="l00115"></a>00115 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
+<a name="l00116"></a>00116 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this->name,CHANMAX);
+<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (mode_on)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
+<a name="l00121"></a>00121 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 <span class="keywordflow">else</span>
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
+<a name="l00132"></a>00132 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
</pre></div>
<p>
</td>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00151">151</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="binarymodes"></a><!-- doxytag: member="chanrec::binarymodes" ref="binarymodes" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00147">147</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="created"></a><!-- doxytag: member="chanrec::created" ref="created" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00125">125</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="custom_5Fmodes_5BMAXMODES_5D"></a><!-- doxytag: member="chanrec::custom_modes" ref="custom_5Fmodes_5BMAXMODES_5D" args="[MAXMODES]" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00112">112</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, and <a class="el" href="channels_8cpp-source.html#l00086">SetCustomMode()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, and <a class="el" href="channels_8cpp-source.html#l00085">SetCustomMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="internal_5Fuserlist"></a><!-- doxytag: member="chanrec::internal_userlist" ref="internal_5Fuserlist" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00117">117</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00167">AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00173">DelUser()</a>, and <a class="el" href="channels_8cpp-source.html#l00187">GetUsers()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00166">AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00172">DelUser()</a>, and <a class="el" href="channels_8cpp-source.html#l00186">GetUsers()</a>. </td>
</tr>
</table>
<a class="anchor" name="key_5B_33_32_5D"></a><!-- doxytag: member="chanrec::key" ref="key_5B_33_32_5D" args="[32]" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00143">143</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="limit"></a><!-- doxytag: member="chanrec::limit" ref="limit" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00138">138</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="name_5BCHANMAX_5D"></a><!-- doxytag: member="chanrec::name" ref="name_5BCHANMAX_5D" args="[CHANMAX]" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00108">108</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00173">DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00172">DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="setby_5BNICKMAX_5D"></a><!-- doxytag: member="chanrec::setby" ref="setby_5BNICKMAX_5D" args="[NICKMAX]" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00133">133</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="topic_5BMAXBUF_5D"></a><!-- doxytag: member="chanrec::topic" ref="topic_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00122">122</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="topicset"></a><!-- doxytag: member="chanrec::topicset" ref="topicset" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00129">129</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a><li><a class="el" href="channels_8cpp-source.html">channels.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classclassbase.html#age">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#classbase_28_29">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
-2dcead24293b96c88fe586688d98dbf1
\ No newline at end of file
+a7cad757539041de468d74629f972ab7
\ No newline at end of file
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>command_t Member List</h1>This is the complete list of members for <a class="el" href="classcommand__t.html">command_t</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classclassbase.html#age">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classclassbase.html#classbase_28_29">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#Extend_28std_3A_3Astring_20key_2C_20char_20_2Ap_29">Extend</a>(std::string key, char *p)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#command">command</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a>(std::string cmd, char flags, int minpara)</td><td><a class="el" href="classcommand__t.html">command_t</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#flags_5Fneeded">flags_needed</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#GetExt_28std_3A_3Astring_20key_29">GetExt</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#GetExtList_28std_3A_3Adeque_3C_20std_3A_3Astring_20_3E_20_26list_29">GetExtList</a>(std::deque< std::string > &list)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classcommand__t.html#handler_5Ffunction">handler_function</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">Handle</a>(char **parameters, int pcnt, userrec *user)=0</td><td><a class="el" href="classcommand__t.html">command_t</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#min_5Fparams">min_params</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Shrink</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">source</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#source">source</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#total_5Fbytes">total_bytes</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#use_5Fcount">use_count</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">~command_t</a>()</td><td><a class="el" href="classcommand__t.html">command_t</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<h1>command_t Class Reference</h1><!-- doxytag: class="command_t" --><!-- doxytag: inherits="Extensible" -->A structure that defines a command.
+<h1>command_t Class Reference</h1><!-- doxytag: class="command_t" -->A structure that defines a command.
<a href="#_details">More...</a>
<p>
<code>#include <<a class="el" href="ctables_8h-source.html">ctables.h</a>></code>
<p>
Inheritance diagram for command_t:<p><center><img src="classcommand__t__inherit__graph.gif" border="0" usemap="#command__t__inherit__map" alt="Inheritance graph"></center>
<map name="command__t__inherit__map">
-<area href="classExtensible.html" shape="rect" coords="11,81,93,108" alt="">
-<area href="classclassbase.html" shape="rect" coords="12,7,92,33" alt="">
+<area href="classcmd__mode.html" shape="rect" coords="8,82,96,108" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for command_t:<p><center><img src="classcommand__t__coll__graph.gif" border="0" usemap="#command__t__coll__map" alt="Collaboration graph"></center>
-<map name="command__t__coll__map">
-<area href="classExtensible.html" shape="rect" coords="80,97,163,124" alt="">
-<area href="classclassbase.html" shape="rect" coords="7,7,87,33" alt="">
-</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classcommand__t-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command</a> [MAXBUF]</td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a> (<a class="el" href="namespaceirc.html#string">std::string</a> cmd, char flags, int minpara)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">Handle</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)=0</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Command name. <a href="#command_5BMAXBUF_5D"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#handler_5Ffunction">handler_function</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">~command_t</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#command">command</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Handler function as in typedef. <a href="#handler_5Ffunction"></a><br></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Command name. <a href="#command"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#flags_5Fneeded">flags_needed</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">User flags needed to execute the command or 0. <a href="#flags_5Fneeded"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#total_5Fbytes">total_bytes</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">used by /stats m <a href="#total_5Fbytes"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">source</a> [MAXBUF]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#source">source</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">used for resource tracking between modules <a href="#source_5BMAXBUF_5D"></a><br></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">used for resource tracking between modules <a href="#source"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A structure that defines a command.
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00026">26</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="command_5BMAXBUF_5D"></a><!-- doxytag: member="command_t::command" ref="command_5BMAXBUF_5D" args="[MAXBUF]" --><p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00029">29</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29"></a><!-- doxytag: member="command_t::command_t" ref="command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29" args="(std::string cmd, char flags, int minpara)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command_t::command</a>[MAXBUF] </td>
+ <td class="md" nowrap valign="top">command_t::command_t </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
+ <td class="mdname" nowrap> <em>cmd</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char </td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int </td>
+ <td class="mdname" nowrap> <em>minpara</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"><code> [inline]</code></td>
</tr>
</table>
</td>
<td>
<p>
-Command name.
-<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00031">31</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00051">51</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+References <a class="el" href="ctables_8h-source.html#l00049">source</a>, <a class="el" href="ctables_8h-source.html#l00046">total_bytes</a>, and <a class="el" href="ctables_8h-source.html#l00043">use_count</a>.<div class="fragment"><pre class="fragment"><a name="l00051"></a>00051 : <a class="code" href="classcommand__t.html#command">command</a>(cmd), <a class="code" href="classcommand__t.html#flags_5Fneeded">flags_needed</a>(flags), <a class="code" href="classcommand__t.html#min_5Fparams">min_params</a>(minpara)
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <a class="code" href="classcommand__t.html#use_5Fcount">use_count</a> = <a class="code" href="classcommand__t.html#total_5Fbytes">total_bytes</a> = 0;
+<a name="l00054"></a>00054 <a class="code" href="classcommand__t.html#source">source</a> = <span class="stringliteral">"<core>"</span>;
+<a name="l00055"></a>00055 }
+</pre></div>
+<p>
+ </td>
</tr>
</table>
-<a class="anchor" name="flags_5Fneeded"></a><!-- doxytag: member="command_t::flags_needed" ref="flags_5Fneeded" args="" --><p>
+<a class="anchor" name="_7Ecommand_5Ft_28_29"></a><!-- doxytag: member="command_t::~command_t" ref="_7Ecommand_5Ft_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#flags_5Fneeded">command_t::flags_needed</a> </td>
+ <td class="md" nowrap valign="top">virtual command_t::~command_t </td>
+ <td class="md" valign="top">( </td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
</tr>
</table>
</td>
<td>
<p>
-User flags needed to execute the command or 0.
+
+<p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00059">59</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.<div class="fragment"><pre class="fragment"><a name="l00059"></a>00059 {}
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30"></a><!-- doxytag: member="command_t::Handle" ref="Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30" args="(char **parameters, int pcnt, userrec *user)=0" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">virtual void command_t::Handle </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">char ** </td>
+ <td class="mdname" nowrap> <em>parameters</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int </td>
+ <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00037">37</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Implemented in <a class="el" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">cmd_mode</a>. </td>
</tr>
</table>
-<a class="anchor" name="handler_5Ffunction"></a><!-- doxytag: member="command_t::handler_function" ref="handler_5Ffunction" args="" --><p>
+<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="command"></a><!-- doxytag: member="command_t::command" ref="command" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>* <a class="el" href="classcommand__t.html#handler_5Ffunction">command_t::handler_function</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classcommand__t.html#command">command_t::command</a> </td>
</tr>
</table>
</td>
<td>
<p>
-Handler function as in typedef.
+Command name.
<p>
<p>
Definition at line <a class="el" href="ctables_8h-source.html#l00034">34</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
</tr>
</table>
+<a class="anchor" name="flags_5Fneeded"></a><!-- doxytag: member="command_t::flags_needed" ref="flags_5Fneeded" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#flags_5Fneeded">command_t::flags_needed</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+User flags needed to execute the command or 0.
+<p>
+
+<p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00037">37</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="min_5Fparams"></a><!-- doxytag: member="command_t::min_params" ref="min_5Fparams" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
Definition at line <a class="el" href="ctables_8h-source.html#l00040">40</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="source_5BMAXBUF_5D"></a><!-- doxytag: member="command_t::source" ref="source_5BMAXBUF_5D" args="[MAXBUF]" --><p>
+<a class="anchor" name="source"></a><!-- doxytag: member="command_t::source" ref="source" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">command_t::source</a>[MAXBUF] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classcommand__t.html#source">command_t::source</a> </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00049">49</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00049">49</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+Referenced by <a class="el" href="ctables_8h-source.html#l00051">command_t()</a>. </td>
</tr>
</table>
<a class="anchor" name="total_5Fbytes"></a><!-- doxytag: member="command_t::total_bytes" ref="total_5Fbytes" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00046">46</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00046">46</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+Referenced by <a class="el" href="ctables_8h-source.html#l00051">command_t()</a>. </td>
</tr>
</table>
<a class="anchor" name="use_5Fcount"></a><!-- doxytag: member="command_t::use_count" ref="use_5Fcount" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00043">43</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00043">43</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+Referenced by <a class="el" href="ctables_8h-source.html#l00051">command_t()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ctables_8h-source.html">ctables.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $classExtensible.html 80,97 163,124
-rect $classclassbase.html 7,7 87,33
-c1351289da2fb0e69df5517d601b50d5
\ No newline at end of file
+a870a1a889c9b48d45ed8d3fe3dde1c9
\ No newline at end of file
base referer
-rect $classExtensible.html 11,81 93,108
-rect $classclassbase.html 12,7 92,33
+rect $classcmd__mode.html 8,82 96,108
-f184248fba7e0bab49a632a5b1d29a64
\ No newline at end of file
+561f8c00e2c3919b70cd1ad50528624f
\ No newline at end of file
<tr class="memlist"><td><a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Shrink</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#signon">signon</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00054">54</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="bytes_5Fout"></a><!-- doxytag: member="connection::bytes_out" ref="bytes_5Fout" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00058">58</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00270">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmds_5Fin"></a><!-- doxytag: member="connection::cmds_in" ref="cmds_5Fin" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00062">62</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmds_5Fout"></a><!-- doxytag: member="connection::cmds_out" ref="cmds_5Fout" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00066">66</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00270">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="fd"></a><!-- doxytag: member="connection::fd" ref="fd" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00042">42</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="connection_8h-source.html#l00100">connection()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00441">Server::SendTo()</a>, <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="connection_8h-source.html#l00100">connection()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00440">Server::SendTo()</a>, <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="haspassed"></a><!-- doxytag: member="connection::haspassed" ref="haspassed" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00070">70</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="host_5B_31_36_30_5D"></a><!-- doxytag: member="connection::host" ref="host_5B_31_36_30_5D" args="[160]" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00046">46</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00089">userrec::GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00116">userrec::GetFullRealHost()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="idle_5Flastmsg"></a><!-- doxytag: member="connection::idle_lastmsg" ref="idle_5Flastmsg" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00092">92</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="ip_5B_31_36_5D"></a><!-- doxytag: member="connection::ip" ref="ip_5B_31_36_5D" args="[16]" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00050">50</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="lastping"></a><!-- doxytag: member="connection::lastping" ref="lastping" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00084">84</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="nping"></a><!-- doxytag: member="connection::nping" ref="nping" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00096">96</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="port"></a><!-- doxytag: member="connection::port" ref="port" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00076">76</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="registered"></a><!-- doxytag: member="connection::registered" ref="registered" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00080">80</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="signon"></a><!-- doxytag: member="connection::signon" ref="signon" args="" --><p>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00088">88</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<h1>InspIRCd Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a> | <a class="qindex" href="#letter_W">W</a> | <a class="qindex" href="#letter_X">X</a> | <a class="qindex" href="#letter_Z">Z</a></div><p>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table>
-</td><td><a class="el" href="classCullList.html">CullList</a> </td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> H </div></td></tr></table>
-</td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> M </div></td></tr></table>
-</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a> </td></tr><tr><td><a class="el" href="classAdmin.html">Admin</a> </td><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
-</td><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">hash< in_addr ></a> (<a class="el" href="namespacenspace.html">nspace</a>) </td><td><a class="el" href="classModeParameter.html">ModeParameter</a> </td><td><a class="el" href="structirc_1_1StrHashComp.html">StrHashComp</a> (<a class="el" href="namespaceirc.html">irc</a>) </td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> B </div></td></tr></table>
-</td><td><a class="el" href="classDNS.html">DNS</a> </td><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">hash< string ></a> (<a class="el" href="namespacenspace.html">nspace</a>) </td><td><a class="el" href="classModule.html">Module</a> </td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> U </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classBanItem.html">BanItem</a> </td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a> </td><td><a class="el" href="classHostItem.html">HostItem</a> </td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a> </td><td><a class="el" href="classucrec.html">ucrec</a> </td></tr><tr><td><a class="el" href="classBoolSet.html">BoolSet</a> </td><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table>
+</td><td><a class="el" href="classconnection.html">connection</a> </td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> G </div></td></tr></table>
+</td><td><a class="el" href="classKLine.html">KLine</a> </td><td><a class="el" href="classserverstats.html">serverstats</a> </td></tr><tr><td><a class="el" href="classAdmin.html">Admin</a> </td><td><a class="el" href="classCullItem.html">CullItem</a> </td><td><a class="el" href="classGLine.html">GLine</a> </td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> M </div></td></tr></table>
+</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a> </td></tr><tr><td><a class="el" href="classAES.html">AES</a> </td><td><a class="el" href="classCullList.html">CullList</a> </td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> H </div></td></tr></table>
+</td><td><a class="el" href="classModeParameter.html">ModeParameter</a> </td><td><a class="el" href="structirc_1_1StrHashComp.html">StrHashComp</a> (<a class="el" href="namespaceirc.html">irc</a>) </td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> B </div></td></tr></table>
+</td><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
+</td><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">hash< in_addr ></a> (<a class="el" href="namespacenspace.html">nspace</a>) </td><td><a class="el" href="classModeParser.html">ModeParser</a> </td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> U </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classBanItem.html">BanItem</a> </td><td><a class="el" href="classDNS.html">DNS</a> </td><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">hash< string ></a> (<a class="el" href="namespacenspace.html">nspace</a>) </td><td><a class="el" href="classModule.html">Module</a> </td><td><a class="el" href="classucrec.html">ucrec</a> </td></tr><tr><td><a class="el" href="classBoolSet.html">BoolSet</a> </td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a> </td><td><a class="el" href="classHostItem.html">HostItem</a> </td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a> </td><td><a class="el" href="classuserrec.html">userrec</a> </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
+</td><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table>
</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
-</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a> </td><td><a class="el" href="classuserrec.html">userrec</a> </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
-</td><td><a class="el" href="classELine.html">ELine</a> </td><td><a class="el" href="structirc_1_1InAddr__HashComp.html">InAddr_HashComp</a> (<a class="el" href="namespaceirc.html">irc</a>) </td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Q </div></td></tr></table>
-</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> V </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classchanrec.html">chanrec</a> </td><td><a class="el" href="classEvent.html">Event</a> </td><td><a class="el" href="classInspIRCd.html">InspIRCd</a> </td><td><a class="el" href="classQLine.html">QLine</a> </td><td><a class="el" href="classVersion.html">Version</a> </td></tr><tr><td><a class="el" href="classstd_1_1char__traits.html">char_traits</a> (<a class="el" href="namespacestd.html">std</a>) </td><td><a class="el" href="classExemptItem.html">ExemptItem</a> </td><td><a class="el" href="classInspSocket.html">InspSocket</a> </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
-</td><td><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> W </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classclassbase.html">classbase</a> </td><td><a class="el" href="classExtensible.html">Extensible</a> </td><td><a class="el" href="classInvited.html">Invited</a> </td><td><a class="el" href="classRequest.html">Request</a> </td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a> </td></tr><tr><td><a class="el" href="classcommand__t.html">command_t</a> </td><td><a class="el" href="classExtMode.html">ExtMode</a> </td><td><a class="el" href="classInviteItem.html">InviteItem</a> </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
-</td><td><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> X </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classConfigReader.html">ConfigReader</a> </td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> F </div></td></tr></table>
-</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc_char_traits</a> (<a class="el" href="namespaceirc.html">irc</a>) </td><td><a class="el" href="classServer.html">Server</a> </td><td><a class="el" href="classXLine.html">XLine</a> </td></tr><tr><td><a class="el" href="classConnectClass.html">ConnectClass</a> </td><td><a class="el" href="classFileReader.html">FileReader</a> </td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> K </div></td></tr></table>
-</td><td><a class="el" href="classServerConfig.html">ServerConfig</a> </td><td><a name="letter_Z"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Z </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classconnection.html">connection</a> </td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> G </div></td></tr></table>
-</td><td><a class="el" href="classKLine.html">KLine</a> </td><td><a class="el" href="classserverstats.html">serverstats</a> </td><td><a class="el" href="classZLine.html">ZLine</a> </td></tr><tr><td><a class="el" href="classCullItem.html">CullItem</a> </td><td><a class="el" href="classGLine.html">GLine</a> </td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a> | <a class="qindex" href="#letter_W">W</a> | <a class="qindex" href="#letter_X">X</a> | <a class="qindex" href="#letter_Z">Z</a></div><p>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a> </td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> V </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classchanrec.html">chanrec</a> </td><td><a class="el" href="classELine.html">ELine</a> </td><td><a class="el" href="structirc_1_1InAddr__HashComp.html">InAddr_HashComp</a> (<a class="el" href="namespaceirc.html">irc</a>) </td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Q </div></td></tr></table>
+</td><td><a class="el" href="classVersion.html">Version</a> </td></tr><tr><td><a class="el" href="classstd_1_1char__traits.html">char_traits</a> (<a class="el" href="namespacestd.html">std</a>) </td><td><a class="el" href="classEvent.html">Event</a> </td><td><a class="el" href="classInspIRCd.html">InspIRCd</a> </td><td><a class="el" href="classQLine.html">QLine</a> </td><td><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> W </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classclassbase.html">classbase</a> </td><td><a class="el" href="classExemptItem.html">ExemptItem</a> </td><td><a class="el" href="classInspSocket.html">InspSocket</a> </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
+</td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a> </td></tr><tr><td><a class="el" href="classcmd__mode.html">cmd_mode</a> </td><td><a class="el" href="classExtensible.html">Extensible</a> </td><td><a class="el" href="classInvited.html">Invited</a> </td><td><a class="el" href="classRequest.html">Request</a> </td><td><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> X </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classcommand__t.html">command_t</a> </td><td><a class="el" href="classExtMode.html">ExtMode</a> </td><td><a class="el" href="classInviteItem.html">InviteItem</a> </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
+</td><td><a class="el" href="classXLine.html">XLine</a> </td></tr><tr><td><a class="el" href="classConfigReader.html">ConfigReader</a> </td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> F </div></td></tr></table>
+</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc_char_traits</a> (<a class="el" href="namespaceirc.html">irc</a>) </td><td><a class="el" href="classServer.html">Server</a> </td><td><a name="letter_Z"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Z </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classConnectClass.html">ConnectClass</a> </td><td><a class="el" href="classFileReader.html">FileReader</a> </td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> K </div></td></tr></table>
+</td><td><a class="el" href="classServerConfig.html">ServerConfig</a> </td><td><a class="el" href="classZLine.html">ZLine</a> </td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a> | <a class="qindex" href="#letter_W">W</a> | <a class="qindex" href="#letter_X">X</a> | <a class="qindex" href="#letter_Z">Z</a></div><p>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>serverstats Member List</h1>This is the complete list of members for <a class="el" href="classserverstats.html">serverstats</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classserverstats.html#BoundPortCount">BoundPortCount</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#serverstats_28_29">serverstats</a>()</td><td><a class="el" href="classserverstats.html">serverstats</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsAccept">statsAccept</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsCollisions">statsCollisions</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsRefused">statsRefused</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsSent">statsSent</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsUnknown">statsUnknown</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classserverstats.html#statsRecv">statsRecv</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classserverstats.html#BoundPortCount">BoundPortCount</a></td></tr>
+
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00072">72</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00074">74</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="serverstats_28_29"></a><!-- doxytag: member="serverstats::serverstats" ref="serverstats_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00086">86</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00089">89</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-References <a class="el" href="inspircd_8h-source.html#l00075">statsAccept</a>, <a class="el" href="inspircd_8h-source.html#l00078">statsCollisions</a>, <a class="el" href="inspircd_8h-source.html#l00082">statsConnects</a>, <a class="el" href="inspircd_8h-source.html#l00079">statsDns</a>, <a class="el" href="inspircd_8h-source.html#l00081">statsDnsBad</a>, <a class="el" href="inspircd_8h-source.html#l00080">statsDnsGood</a>, <a class="el" href="inspircd_8h-source.html#l00084">statsRecv</a>, <a class="el" href="inspircd_8h-source.html#l00076">statsRefused</a>, <a class="el" href="inspircd_8h-source.html#l00083">statsSent</a>, and <a class="el" href="inspircd_8h-source.html#l00077">statsUnknown</a>.<div class="fragment"><pre class="fragment"><a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
-<a name="l00090"></a>00090 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
-<a name="l00091"></a>00091 }
+References <a class="el" href="inspircd_8h-source.html#l00087">BoundPortCount</a>, <a class="el" href="inspircd_8h-source.html#l00077">statsAccept</a>, <a class="el" href="inspircd_8h-source.html#l00080">statsCollisions</a>, <a class="el" href="inspircd_8h-source.html#l00084">statsConnects</a>, <a class="el" href="inspircd_8h-source.html#l00081">statsDns</a>, <a class="el" href="inspircd_8h-source.html#l00083">statsDnsBad</a>, <a class="el" href="inspircd_8h-source.html#l00082">statsDnsGood</a>, <a class="el" href="inspircd_8h-source.html#l00086">statsRecv</a>, <a class="el" href="inspircd_8h-source.html#l00078">statsRefused</a>, <a class="el" href="inspircd_8h-source.html#l00085">statsSent</a>, and <a class="el" href="inspircd_8h-source.html#l00079">statsUnknown</a>.<div class="fragment"><pre class="fragment"><a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
+<a name="l00094"></a>00094 <a class="code" href="classserverstats.html#BoundPortCount">BoundPortCount</a> = 0;
+<a name="l00095"></a>00095 }
</pre></div>
<p>
</td>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="BoundPortCount"></a><!-- doxytag: member="serverstats::BoundPortCount" ref="BoundPortCount" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="classserverstats.html#BoundPortCount">serverstats::BoundPortCount</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00087">87</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="statsAccept"></a><!-- doxytag: member="serverstats::statsAccept" ref="statsAccept" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00075">75</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00077">77</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsCollisions"></a><!-- doxytag: member="serverstats::statsCollisions" ref="statsCollisions" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00078">78</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00080">80</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsConnects"></a><!-- doxytag: member="serverstats::statsConnects" ref="statsConnects" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00082">82</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00084">84</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsDns"></a><!-- doxytag: member="serverstats::statsDns" ref="statsDns" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00079">79</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00081">81</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsDnsBad"></a><!-- doxytag: member="serverstats::statsDnsBad" ref="statsDnsBad" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00081">81</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00083">83</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsDnsGood"></a><!-- doxytag: member="serverstats::statsDnsGood" ref="statsDnsGood" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00080">80</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00082">82</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsRecv"></a><!-- doxytag: member="serverstats::statsRecv" ref="statsRecv" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00084">84</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00086">86</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsRefused"></a><!-- doxytag: member="serverstats::statsRefused" ref="statsRefused" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00076">76</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00078">78</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsSent"></a><!-- doxytag: member="serverstats::statsSent" ref="statsSent" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00083">83</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00085">85</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsUnknown"></a><!-- doxytag: member="serverstats::statsUnknown" ref="statsUnknown" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00077">77</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00079">79</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="inspircd_8h-source.html">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
-0d72c6ae7afecc93452896afbba8a691
\ No newline at end of file
+fdefe64364c509e2b3a4a66fc7ca77f1
\ No newline at end of file
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classucrec.html#ucrec_28_29">ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classucrec.html#_7Eucrec_28_29">~ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00254">254</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
</tr>
</table>
<a class="anchor" name="uc_5Fmodes"></a><!-- doxytag: member="ucrec::uc_modes" ref="uc_5Fmodes" args="" --><p>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00249">249</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#haspassed">haspassed</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a>(char *command)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">HasPermission</a>(std::string &command)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#host_5B_31_36_30_5D">host</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#invites">invites</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a>(char *channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">InviteTo</a>(irc::string &channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#ip_5B_31_36_5D">ip</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(char *channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(irc::string &channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#lastping">lastping</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#lines_5Fin">lines_in</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#modes_5B_35_34_5D">modes</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#recvq">recvq</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#recvqmax">recvqmax</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#registered">registered</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(char *channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(irc::string &channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#reset_5Fdue">reset_due</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#sendq">sendq</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#sendqmax">sendqmax</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#WriteError">WriteError</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#_7Euserrec_28_29">~userrec</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. <a href="#GetFullRealHost_28_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a> (char *channel)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a> (<a class="el" href="namespaceirc.html#string">irc::string</a> &channel)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if a user is invited to a channel. <a href="#IsInvited_28char_20_2Achannel_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a> (char *channel)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if a user is invited to a channel. <a href="#IsInvited_28irc_3A_3Astring_20_26channel_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">InviteTo</a> (<a class="el" href="namespaceirc.html#string">irc::string</a> &channel)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). <a href="#InviteTo_28char_20_2Achannel_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a> (char *channel)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). <a href="#InviteTo_28irc_3A_3Astring_20_26channel_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a> (<a class="el" href="namespaceirc.html#string">irc::string</a> &channel)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a channel from a users invite list. <a href="#RemoveInvite_28char_20_2Achannel_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a> (char *command)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a channel from a users invite list. <a href="#RemoveInvite_28irc_3A_3Astring_20_26channel_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">HasPermission</a> (<a class="el" href="namespaceirc.html#string">std::string</a> &command)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. <a href="#HasPermission_28char_20_2Acommand_29"></a><br></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. <a href="#HasPermission_28std_3A_3Astring_20_26command_29"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a> (void *buffer, size_t size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calls read() to read some data for this user using their fd. <a href="#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29"></a><br></td></tr>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00111">111</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00115">115</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="userrec_28_29"></a><!-- doxytag: member="userrec::userrec" ref="userrec_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00036">36</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00158">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00054">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="users_8h-source.html#l00149">chans</a>, <a class="el" href="connection_8h-source.html#l00062">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00134">dhost</a>, <a class="el" href="users_8h-source.html#l00181">dns_done</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8h-source.html#l00164">flood</a>, <a class="el" href="users_8h-source.html#l00138">fullname</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00117">invites</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00084">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00206">lines_in</a>, <a class="el" href="users_8h-source.html#l00147">modes</a>, <a class="el" href="users_8h-source.html#l00124">nick</a>, <a class="el" href="connection_8h-source.html#l00096">connection::nping</a>, <a class="el" href="users_8h-source.html#l00177">oper</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="users_8h-source.html#l00197">recvq</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="users_8h-source.html#l00207">reset_due</a>, <a class="el" href="users_8h-source.html#l00202">sendq</a>, <a class="el" href="users_8h-source.html#l00153">server</a>, <a class="el" href="inspircd__io_8h-source.html#l00068">ServerConfig::ServerName</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="users_8h-source.html#l00170">timeout</a>.<div class="fragment"><pre class="fragment"><a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
-<a name="l00039"></a>00039 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
-<a name="l00040"></a>00040 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
-<a name="l00041"></a>00041 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
-<a name="l00042"></a>00042 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
-<a name="l00043"></a>00043 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
-<a name="l00044"></a>00044 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
-<a name="l00045"></a>00045 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
-<a name="l00046"></a>00046 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
-<a name="l00047"></a>00047 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
-<a name="l00048"></a>00048 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
-<a name="l00049"></a>00049 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
-<a name="l00050"></a>00050 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00051"></a>00051 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
-<a name="l00052"></a>00052 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
-<a name="l00053"></a>00053 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
-<a name="l00054"></a>00054 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
-<a name="l00055"></a>00055 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
-<a name="l00056"></a>00056 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00057"></a>00057 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
-<a name="l00058"></a>00058 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
-<a name="l00059"></a>00059 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
-<a name="l00060"></a>00060 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00063">63</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00162">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00054">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="users_8h-source.html#l00153">chans</a>, <a class="el" href="connection_8h-source.html#l00062">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00138">dhost</a>, <a class="el" href="users_8h-source.html#l00185">dns_done</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8h-source.html#l00168">flood</a>, <a class="el" href="users_8h-source.html#l00142">fullname</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00121">invites</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00084">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00210">lines_in</a>, <a class="el" href="users_8h-source.html#l00151">modes</a>, <a class="el" href="users_8h-source.html#l00128">nick</a>, <a class="el" href="connection_8h-source.html#l00096">connection::nping</a>, <a class="el" href="users_8h-source.html#l00181">oper</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="users_8h-source.html#l00201">recvq</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="users_8h-source.html#l00211">reset_due</a>, <a class="el" href="users_8h-source.html#l00206">sendq</a>, <a class="el" href="users_8h-source.html#l00157">server</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="users_8h-source.html#l00174">timeout</a>.<div class="fragment"><pre class="fragment"><a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
+<a name="l00066"></a>00066 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
+<a name="l00067"></a>00067 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
+<a name="l00068"></a>00068 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
+<a name="l00069"></a>00069 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
+<a name="l00070"></a>00070 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
+<a name="l00071"></a>00071 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
+<a name="l00072"></a>00072 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
+<a name="l00073"></a>00073 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
+<a name="l00074"></a>00074 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00078"></a>00078 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
+<a name="l00079"></a>00079 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
+<a name="l00080"></a>00080 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
+<a name="l00082"></a>00082 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
+<a name="l00083"></a>00083 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00084"></a>00084 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
+<a name="l00085"></a>00085 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
+<a name="l00086"></a>00086 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
+<a name="l00087"></a>00087 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00062">62</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00089">89</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 }
</pre></div>
<p>
</td>
<p>
The buffer can grow to any size within limits of the available memory, managed by the size of a <a class="el" href="namespaceirc.html#string">std::string</a>, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00198">198</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>, <a class="el" href="users_8h-source.html#l00220">recvqmax</a>, <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
-<a name="l00201"></a>00201 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < a.length(); i++)
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) && (a[i] != <span class="charliteral">'\0'</span>) && (a[i] != 7))
-<a name="l00203"></a>00203 b = b + a[i];
-<a name="l00204"></a>00204 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
-<a name="l00205"></a>00205 stream << b;
-<a name="l00206"></a>00206 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
-<a name="l00207"></a>00207 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
-<a name="l00208"></a>00208 <span class="comment">// count the size of the first line in the buffer.</span>
-<a name="l00209"></a>00209 <span class="keywordflow">while</span> (i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
-<a name="l00212"></a>00212 <span class="keywordflow">break</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() > (unsigned)this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
-<a name="l00217"></a>00217 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
-<a name="l00220"></a>00220 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> (i < 600);
-<a name="l00222"></a>00222 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00219">219</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>, <a class="el" href="users_8h-source.html#l00224">recvqmax</a>, <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
+<a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < a.length(); i++)
+<a name="l00223"></a>00223 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) && (a[i] != <span class="charliteral">'\0'</span>) && (a[i] != 7))
+<a name="l00224"></a>00224 b = b + a[i];
+<a name="l00225"></a>00225 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
+<a name="l00226"></a>00226 stream << b;
+<a name="l00227"></a>00227 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
+<a name="l00228"></a>00228 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
+<a name="l00229"></a>00229 <span class="comment">// count the size of the first line in the buffer.</span>
+<a name="l00230"></a>00230 <span class="keywordflow">while</span> (i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
+<a name="l00231"></a>00231 {
+<a name="l00232"></a>00232 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
+<a name="l00233"></a>00233 <span class="keywordflow">break</span>;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() > (unsigned)this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
+<a name="l00238"></a>00238 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
+<a name="l00241"></a>00241 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> (i < 600);
+<a name="l00243"></a>00243 }
</pre></div>
<p>
</td>
<p>
You may add any amount of text up to this users sendq value, if you exceed the sendq value, <a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError()</a> will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00254">254</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00202">sendq</a>, <a class="el" href="users_8h-source.html#l00216">sendqmax</a>, <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">if</span> (this->GetWriteError() != <span class="stringliteral">""</span>)
-<a name="l00257"></a>00257 <span class="keywordflow">return</span>;
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() > (unsigned)this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
-<a name="l00261"></a>00261 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
-<a name="l00262"></a>00262 <span class="keywordflow">return</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 std::stringstream stream;
-<a name="l00265"></a>00265 stream << <a class="code" href="classuserrec.html#sendq">sendq</a> << data;
-<a name="l00266"></a>00266 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
-<a name="l00267"></a>00267 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00275">275</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00206">sendq</a>, <a class="el" href="users_8h-source.html#l00220">sendqmax</a>, <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (this->GetWriteError() != <span class="stringliteral">""</span>)
+<a name="l00278"></a>00278 <span class="keywordflow">return</span>;
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() > (unsigned)this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="comment">/* Fix by brain - Set the error text BEFORE calling writeopers, because</span>
+<a name="l00282"></a>00282 <span class="comment"> * if we dont it'll recursively call here over and over again trying</span>
+<a name="l00283"></a>00283 <span class="comment"> * to repeatedly add the text to the sendq!</span>
+<a name="l00284"></a>00284 <span class="comment"> */</span>
+<a name="l00285"></a>00285 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
+<a name="l00286"></a>00286 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
+<a name="l00287"></a>00287 <span class="keywordflow">return</span>;
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 std::stringstream stream;
+<a name="l00290"></a>00290 stream << <a class="code" href="classuserrec.html#sendq">sendq</a> << data;
+<a name="l00291"></a>00291 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
+<a name="l00292"></a>00292 }
</pre></div>
<p>
</td>
<p>
one complete line may be read)
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00224">224</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00245">245</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
-<a name="l00228"></a>00228 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00229"></a>00229 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00230"></a>00230 }
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00250"></a>00250 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00251"></a>00251 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00232">232</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00253">253</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>.
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00235"></a>00235 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00256"></a>00256 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00066">66</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 shutdown(this->fd,2);
-<a name="l00069"></a>00069 close(this->fd);
-<a name="l00070"></a>00070 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00093">93</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>.<div class="fragment"><pre class="fragment"><a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 shutdown(this->fd,2);
+<a name="l00096"></a>00096 close(this->fd);
+<a name="l00097"></a>00097 }
</pre></div>
<p>
</td>
<p>
This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00270">270</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00202">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-><a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
-<a name="l00275"></a>00275 <span class="keywordtype">int</span> n_sent = write(this->fd,tb,this->sendq.length());
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (n_sent == -1)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 <span class="keywordflow">else</span>
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="comment">// advance the queue</span>
-<a name="l00283"></a>00283 tb += n_sent;
-<a name="l00284"></a>00284 this-><a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
-<a name="l00285"></a>00285 <span class="comment">// update the user's stats counters</span>
-<a name="l00286"></a>00286 this-><a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
-<a name="l00287"></a>00287 this-><a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00295">295</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00206">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>.<div class="fragment"><pre class="fragment"><a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-><a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
+<a name="l00300"></a>00300 <span class="keywordtype">int</span> n_sent = write(this->fd,tb,this->sendq.length());
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (n_sent == -1)
+<a name="l00302"></a>00302 {
+<a name="l00303"></a>00303 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 <span class="keywordflow">else</span>
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="comment">// advance the queue</span>
+<a name="l00308"></a>00308 tb += n_sent;
+<a name="l00309"></a>00309 this-><a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
+<a name="l00310"></a>00310 <span class="comment">// update the user's stats counters</span>
+<a name="l00311"></a>00311 this-><a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
+<a name="l00312"></a>00312 this-><a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
+<a name="l00313"></a>00313 }
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315 }
</pre></div>
<p>
</td>
<p>
This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use <a class="el" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady()</a> to check if it is ok to read the buffer before calling <a class="el" href="classuserrec.html#GetBuffer_28_29">GetBuffer()</a>.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00237">237</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00241"></a>00241 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
-<a name="l00242"></a>00242 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
-<a name="l00243"></a>00243 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) && (strlen(line)))
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 ret = ret + *line;
-<a name="l00246"></a>00246 line++;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
-<a name="l00249"></a>00249 line++;
-<a name="l00250"></a>00250 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> ret;
-<a name="l00252"></a>00252 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00258">258</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
+<a name="l00261"></a>00261 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00262"></a>00262 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
+<a name="l00263"></a>00263 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
+<a name="l00264"></a>00264 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) && (strlen(line)))
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 ret = ret + *line;
+<a name="l00267"></a>00267 line++;
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
+<a name="l00270"></a>00270 line++;
+<a name="l00271"></a>00271 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> ret;
+<a name="l00273"></a>00273 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00072">72</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00099">99</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00134">dhost</a>, <a class="el" href="users_8h-source.html#l00129">ident</a>, and <a class="el" href="users_8h-source.html#l00124">nick</a>.
+References <a class="el" href="users_8h-source.html#l00138">dhost</a>, <a class="el" href="users_8h-source.html#l00133">ident</a>, and <a class="el" href="users_8h-source.html#l00128">nick</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
-<a name="l00075"></a>00075 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> result;
-<a name="l00077"></a>00077 }
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
+<a name="l00102"></a>00102 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> result;
+<a name="l00104"></a>00104 }
</pre></div>
<p>
</td>
<p>
If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00089">89</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00116">116</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">ident</a>, and <a class="el" href="users_8h-source.html#l00124">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
-<a name="l00092"></a>00092 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> fresult;
-<a name="l00094"></a>00094 }
+References <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">ident</a>, and <a class="el" href="users_8h-source.html#l00128">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
+<a name="l00119"></a>00119 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> fresult;
+<a name="l00121"></a>00121 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00110">110</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00136">136</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00117">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> &<a class="code" href="classuserrec.html#invites">invites</a>;
-<a name="l00113"></a>00113 }
+References <a class="el" href="users_8h-source.html#l00121">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> &<a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00139"></a>00139 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00300">300</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00325">325</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00212">WriteError</a>.<div class="fragment"><pre class="fragment"><a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> this-><a class="code" href="classuserrec.html#WriteError">WriteError</a>;
-<a name="l00303"></a>00303 }
+References <a class="el" href="users_8h-source.html#l00216">WriteError</a>.<div class="fragment"><pre class="fragment"><a name="l00326"></a>00326 {
+<a name="l00327"></a>00327 <span class="keywordflow">return</span> this-><a class="code" href="classuserrec.html#WriteError">WriteError</a>;
+<a name="l00328"></a>00328 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="HasPermission_28char_20_2Acommand_29"></a><!-- doxytag: member="userrec::HasPermission" ref="HasPermission_28char_20_2Acommand_29" args="(char *command)" --><p>
+<a class="anchor" name="HasPermission_28std_3A_3Astring_20_26command_29"></a><!-- doxytag: member="userrec::HasPermission" ref="HasPermission_28std_3A_3Astring_20_26command_29" args="(std::string &command)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<tr>
<td class="md" nowrap valign="top">bool userrec::HasPermission </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>command</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
<p>
This is done by looking up their oper type from <a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">userrec::oper</a>, then referencing this to their oper classes and checking the commands they can execute.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00144">144</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00238">ServerConfig::config_f</a>, <a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ServerConfig::ConfValue()</a>, and <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-<a name="l00147"></a>00147 <span class="keywordtype">char</span>* mycmd;
-<a name="l00148"></a>00148 <span class="keywordtype">char</span>* savept;
-<a name="l00149"></a>00149 <span class="keywordtype">char</span>* savept2;
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="comment">// users on u-lined servers can completely bypass</span>
-<a name="l00152"></a>00152 <span class="comment">// all permissions based checks.</span>
-<a name="l00153"></a>00153 <span class="comment">//</span>
-<a name="l00154"></a>00154 <span class="comment">// of course, if this is sent to a remote server and this</span>
-<a name="l00155"></a>00155 <span class="comment">// server is not ulined there, then that other server</span>
-<a name="l00156"></a>00156 <span class="comment">// silently drops the command.</span>
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this->server))
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="comment">// are they even an oper at all?</span>
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (strchr(this->modes,<span class="charliteral">'o'</span>))
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j < Config->ConfValueEnum(<span class="stringliteral">"type"</span>,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!strcmp(TypeName,this->oper))
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00169"></a>00169 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&savept);
-<a name="l00170"></a>00170 <span class="keywordflow">while</span> (myclass)
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k < Config->ConfValueEnum(<span class="stringliteral">"class"</span>,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00178"></a>00178 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&savept2);
-<a name="l00179"></a>00179 <span class="keywordflow">while</span> (mycmd)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command)) || (*mycmd == <span class="charliteral">'*'</span>))
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept2);
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept);
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00195"></a>00195 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00165">165</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00239">ServerConfig::config_f</a>, <a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ServerConfig::ConfValue()</a>, and <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00166"></a>00166 {
+<a name="l00167"></a>00167 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+<a name="l00168"></a>00168 <span class="keywordtype">char</span>* mycmd;
+<a name="l00169"></a>00169 <span class="keywordtype">char</span>* savept;
+<a name="l00170"></a>00170 <span class="keywordtype">char</span>* savept2;
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="comment">// users on u-lined servers can completely bypass</span>
+<a name="l00173"></a>00173 <span class="comment">// all permissions based checks.</span>
+<a name="l00174"></a>00174 <span class="comment">//</span>
+<a name="l00175"></a>00175 <span class="comment">// of course, if this is sent to a remote server and this</span>
+<a name="l00176"></a>00176 <span class="comment">// server is not ulined there, then that other server</span>
+<a name="l00177"></a>00177 <span class="comment">// silently drops the command.</span>
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this->server))
+<a name="l00179"></a>00179 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="comment">// are they even an oper at all?</span>
+<a name="l00182"></a>00182 <span class="keywordflow">if</span> (strchr(this->modes,<span class="charliteral">'o'</span>))
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j < Config->ConfValueEnum(<span class="stringliteral">"type"</span>,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (!strcmp(TypeName,this->oper))
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&savept);
+<a name="l00191"></a>00191 <span class="keywordflow">while</span> (myclass)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k < Config->ConfValueEnum(<span class="stringliteral">"class"</span>,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00199"></a>00199 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&savept2);
+<a name="l00200"></a>00200 <span class="keywordflow">while</span> (mycmd)
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == <span class="charliteral">'*'</span>))
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept2);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept);
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00216"></a>00216 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="InviteTo_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::InviteTo" ref="InviteTo_28char_20_2Achannel_29" args="(char *channel)" --><p>
+<a class="anchor" name="InviteTo_28irc_3A_3Astring_20_26channel_29"></a><!-- doxytag: member="userrec::InviteTo" ref="InviteTo_28irc_3A_3Astring_20_26channel_29" args="(irc::string &channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<tr>
<td class="md" nowrap valign="top">void userrec::InviteTo </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [virtual]</code></td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00115">115</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00141">141</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00042">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00117">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <a class="code" href="classInvited.html">Invited</a> i;
-<a name="l00118"></a>00118 strlcpy(i.<a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>,channel,CHANMAX);
-<a name="l00119"></a>00119 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
-<a name="l00120"></a>00120 }
+References <a class="el" href="users_8h-source.html#l00046">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00121">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <a class="code" href="classInvited.html">Invited</a> i;
+<a name="l00144"></a>00144 i.<a class="code" href="classInvited.html#channel">channel</a> = channel;
+<a name="l00145"></a>00145 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
+<a name="l00146"></a>00146 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="IsInvited_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::IsInvited" ref="IsInvited_28char_20_2Achannel_29" args="(char *channel)" --><p>
+<a class="anchor" name="IsInvited_28irc_3A_3Astring_20_26channel_29"></a><!-- doxytag: member="userrec::IsInvited" ref="IsInvited_28irc_3A_3Astring_20_26channel_29" args="(irc::string &channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<tr>
<td class="md" nowrap valign="top">bool userrec::IsInvited </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [virtual]</code></td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00096">96</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00123">123</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00117">invites</a>.
+References <a class="el" href="users_8h-source.html#l00121">invites</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (i->channel) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00108"></a>00108 }
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i->channel;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00134"></a>00134 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00079">79</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (this->fd > -1)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> read(this->fd, buffer, size);
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00106">106</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (this->fd > -1)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> read(this->fd, buffer, size);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00113"></a>00113 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="RemoveInvite_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::RemoveInvite" ref="RemoveInvite_28char_20_2Achannel_29" args="(char *channel)" --><p>
+<a class="anchor" name="RemoveInvite_28irc_3A_3Astring_20_26channel_29"></a><!-- doxytag: member="userrec::RemoveInvite" ref="RemoveInvite_28irc_3A_3Astring_20_26channel_29" args="(irc::string &channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<tr>
<td class="md" nowrap valign="top">void userrec::RemoveInvite </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [virtual]</code></td>
<p>
This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00122">122</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="users_8h-source.html#l00117">invites</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
-<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (channel)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (i->channel)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
-<a name="l00136"></a>00136 <span class="keywordflow">return</span>;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00148">148</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="users_8h-source.html#l00121">invites</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i->channel;
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
+<a name="l00159"></a>00159 <span class="keywordflow">return</span>;
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 }
</pre></div>
<p>
</td>
<p>
This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00292">292</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00317">317</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="users_8h-source.html#l00212">WriteError</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="users_8h-source.html#l00216">WriteError</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00254">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00270">FlushWriteBuf()</a>.<div class="fragment"><pre class="fragment"><a name="l00293"></a>00293 {
-<a name="l00294"></a>00294 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this->nick,error.c_str());
-<a name="l00295"></a>00295 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
-<a name="l00296"></a>00296 <span class="keywordflow">if</span> (this->WriteError == <span class="stringliteral">""</span>)
-<a name="l00297"></a>00297 this-><a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
-<a name="l00298"></a>00298 }
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00275">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00295">FlushWriteBuf()</a>.<div class="fragment"><pre class="fragment"><a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this->nick,error.c_str());
+<a name="l00320"></a>00320 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
+<a name="l00321"></a>00321 <span class="keywordflow">if</span> (this->WriteError == <span class="stringliteral">""</span>)
+<a name="l00322"></a>00322 this-><a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
+<a name="l00323"></a>00323 }
</pre></div>
<p>
</td>
<p>
If this string is empty, the user is not marked as away.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00158">158</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00162">162</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="chans"></a><!-- doxytag: member="userrec::chans" ref="chans" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00149">149</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00153">153</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="dhost_5B_31_36_30_5D"></a><!-- doxytag: member="userrec::dhost" ref="dhost_5B_31_36_30_5D" args="[160]" --><p>
<p>
This usually matches the value of <a class="el" href="classconnection.html#host_5B_31_36_30_5D">userrec::host</a>.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00134">134</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00138">138</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00072">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00099">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="dns_5Fdone"></a><!-- doxytag: member="userrec::dns_done" ref="dns_5Fdone" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00181">181</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00185">185</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="flood"></a><!-- doxytag: member="userrec::flood" ref="flood" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00164">164</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00168">168</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="fullname_5BMAXGECOS_2B_31_5D"></a><!-- doxytag: member="userrec::fullname" ref="fullname_5BMAXGECOS_2B_31_5D" args="[MAXGECOS+1]" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00138">138</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00142">142</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="ident_5BIDENTMAX_2B_32_5D"></a><!-- doxytag: member="userrec::ident" ref="ident_5BIDENTMAX_2B_32_5D" args="[IDENTMAX+2]" --><p>
<p>
Two characters are added to the user-defined limit to compensate for the tilde etc.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00129">129</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00133">133</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00072">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00089">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00099">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00116">GetFullRealHost()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="invites"></a><!-- doxytag: member="userrec::invites" ref="invites" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00117">117</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00121">121</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00110">GetInviteList()</a>, <a class="el" href="users_8cpp-source.html#l00115">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00096">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00122">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00136">GetInviteList()</a>, <a class="el" href="users_8cpp-source.html#l00141">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00123">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00148">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="lines_5Fin"></a><!-- doxytag: member="userrec::lines_in" ref="lines_5Fin" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00206">206</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00210">210</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="modes_5B_35_34_5D"></a><!-- doxytag: member="userrec::modes" ref="modes_5B_35_34_5D" args="[54]" --><p>
<p>
This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00147">147</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00151">151</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="nick_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::nick" ref="nick_5BNICKMAX_5D" args="[NICKMAX]" --><p>
<p>
An invalid nickname indicates an unregistered connection prior to the NICK command.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00124">124</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00128">128</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00072">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00089">GetFullRealHost()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00099">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00116">GetFullRealHost()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="oper_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::oper" ref="oper_5BNICKMAX_5D" args="[NICKMAX]" --><p>
<p>
This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00177">177</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00181">181</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="password_5BMAXBUF_5D"></a><!-- doxytag: member="userrec::password" ref="password_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<p>
This is stored even if the <connect> block doesnt need a password, so that modules may check it.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00191">191</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00195">195</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="pingmax"></a><!-- doxytag: member="userrec::pingmax" ref="pingmax" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00185">185</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00189">189</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="recvq"></a><!-- doxytag: member="userrec::recvq" ref="recvq" args="" --><p>
<p>
Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00197">197</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00201">201</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00224">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00232">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00237">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00245">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00253">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00258">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="recvqmax"></a><!-- doxytag: member="userrec::recvqmax" ref="recvqmax" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00220">220</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00224">224</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">AddBuffer()</a>. </td>
</tr>
</table>
<a class="anchor" name="reset_5Fdue"></a><!-- doxytag: member="userrec::reset_due" ref="reset_5Fdue" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00207">207</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00211">211</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="sendq"></a><!-- doxytag: member="userrec::sendq" ref="sendq" args="" --><p>
<p>
Lines waiting to be sent are stored here until their buffer is flushed.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00202">202</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00206">206</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00254">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00270">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00275">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00295">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="sendqmax"></a><!-- doxytag: member="userrec::sendqmax" ref="sendqmax" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00216">216</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00220">220</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00254">AddWriteBuf()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00275">AddWriteBuf()</a>. </td>
</tr>
</table>
<a class="anchor" name="server"></a><!-- doxytag: member="userrec::server" ref="server" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00153">153</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00157">157</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="threshold"></a><!-- doxytag: member="userrec::threshold" ref="threshold" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00208">208</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00212">212</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="timeout"></a><!-- doxytag: member="userrec::timeout" ref="timeout" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00170">170</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00174">174</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteError"></a><!-- doxytag: member="userrec::WriteError" ref="WriteError" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00212">212</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00216">216</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00300">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00325">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00002"></a>00002 <span class="comment"> * | Inspire Internet Relay Chat Daemon |</span>
<a name="l00003"></a>00003 <span class="comment"> * +------------------------------------+</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.</span>
+<a name="l00005"></a>00005 <span class="comment"> * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.</span>
<a name="l00006"></a>00006 <span class="comment"> * E-mail:</span>
<a name="l00007"></a>00007 <span class="comment"> * <brain@chatspike.net></span>
<a name="l00008"></a>00008 <span class="comment"> * <Craig@chatspike.net></span>
<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00034"></a>00034 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_join</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00035"></a>00035 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_part</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00036"></a>00036 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kick</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00037"></a>00037 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_die</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_restart</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kill</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00040"></a>00040 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_summon</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_users</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pass</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_invite</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_topic</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_names</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00046"></a>00046 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_privmsg</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_notice</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_info</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00049"></a>00049 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_time</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whois</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00051"></a>00051 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_quit</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00052"></a>00052 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_who</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00053"></a>00053 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_wallops</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_list</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00055"></a>00055 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rehash</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_lusers</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00057"></a>00057 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_admin</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ping</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00059"></a>00059 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pong</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00060"></a>00060 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_motd</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00061"></a>00061 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rules</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_user</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00063"></a>00063 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_userhost</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ison</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_away</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00066"></a>00066 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whowas</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_trace</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00068"></a>00068 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_modules</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00069"></a>00069 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_stats</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_connect</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00071"></a>00071 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_squit</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00072"></a>00072 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_links</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_map</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_oper</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_nick</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_gline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00078"></a>00078 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_zline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00079"></a>00079 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_qline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_eline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00081"></a>00081 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_server</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00082"></a>00082 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_loadmodule</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_unloadmodule</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00084"></a>00084 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_commands</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00085"></a>00085
-<a name="l00088"></a>00088 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* server);
-<a name="l00089"></a>00089
-<a name="l00092"></a>00092 <span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str);
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classuserrec.html">userrec</a>* dest,<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> signon, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> idle, <span class="keywordtype">char</span>* nick);
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00031"></a>00031 <span class="keywordtype">char</span>* <a class="code" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">CleanFilename</a>(<span class="keywordtype">char</span>* name);
+<a name="l00032"></a>00032 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* server);
+<a name="l00033"></a>00033 <span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str);
+<a name="l00034"></a>00034 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classuserrec.html">userrec</a>* dest,<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> signon, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> idle, <span class="keywordtype">char</span>* nick);
+<a name="l00035"></a>00035 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">host_matches_everyone</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">ip_matches_everyone</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ip, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00037"></a>00037 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">nick_matches_everyone</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> <a class="code" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">operstrcmp</a>(<span class="keywordtype">char</span>* data,<span class="keywordtype">char</span>* input);
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="comment">/* XXX Serious WTFness XXX</span>
+<a name="l00041"></a>00041 <span class="comment"> *</span>
+<a name="l00042"></a>00042 <span class="comment"> * Well, unless someone invents a wildcard or</span>
+<a name="l00043"></a>00043 <span class="comment"> * regexp #include, and makes it a standard,</span>
+<a name="l00044"></a>00044 <span class="comment"> * we're stuck with this way of including all</span>
+<a name="l00045"></a>00045 <span class="comment"> * the commands.</span>
+<a name="l00046"></a>00046 <span class="comment"> */</span>
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="preprocessor">#include "cmd_admin.h"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "cmd_away.h"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "cmd_commands.h"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "cmd_connect.h"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include "cmd_die.h"</span>
+<a name="l00053"></a>00053 <span class="preprocessor">#include "cmd_eline.h"</span>
+<a name="l00054"></a>00054 <span class="preprocessor">#include "cmd_gline.h"</span>
+<a name="l00055"></a>00055 <span class="preprocessor">#include "cmd_info.h"</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#include "cmd_invite.h"</span>
+<a name="l00057"></a>00057 <span class="preprocessor">#include "cmd_ison.h"</span>
+<a name="l00058"></a>00058 <span class="preprocessor">#include "cmd_join.h"</span>
+<a name="l00059"></a>00059 <span class="preprocessor">#include "cmd_kick.h"</span>
+<a name="l00060"></a>00060 <span class="preprocessor">#include "cmd_kill.h"</span>
+<a name="l00061"></a>00061 <span class="preprocessor">#include "cmd_kline.h"</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#include "cmd_links.h"</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#include "cmd_list.h"</span>
+<a name="l00064"></a>00064 <span class="preprocessor">#include "cmd_loadmodule.h"</span>
+<a name="l00065"></a>00065 <span class="preprocessor">#include "cmd_lusers.h"</span>
+<a name="l00066"></a>00066 <span class="preprocessor">#include "cmd_map.h"</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#include "cmd_modules.h"</span>
+<a name="l00068"></a>00068 <span class="preprocessor">#include "cmd_motd.h"</span>
+<a name="l00069"></a>00069 <span class="preprocessor">#include "cmd_names.h"</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#include "cmd_nick.h"</span>
+<a name="l00071"></a>00071 <span class="preprocessor">#include "cmd_notice.h"</span>
+<a name="l00072"></a>00072 <span class="preprocessor">#include "cmd_oper.h"</span>
+<a name="l00073"></a>00073 <span class="preprocessor">#include "cmd_part.h"</span>
+<a name="l00074"></a>00074 <span class="preprocessor">#include "cmd_pass.h"</span>
+<a name="l00075"></a>00075 <span class="preprocessor">#include "cmd_ping.h"</span>
+<a name="l00076"></a>00076 <span class="preprocessor">#include "cmd_pong.h"</span>
+<a name="l00077"></a>00077 <span class="preprocessor">#include "cmd_privmsg.h"</span>
+<a name="l00078"></a>00078 <span class="preprocessor">#include "cmd_qline.h"</span>
+<a name="l00079"></a>00079 <span class="preprocessor">#include "cmd_quit.h"</span>
+<a name="l00080"></a>00080 <span class="preprocessor">#include "cmd_rehash.h"</span>
+<a name="l00081"></a>00081 <span class="preprocessor">#include "cmd_restart.h"</span>
+<a name="l00082"></a>00082 <span class="preprocessor">#include "cmd_rules.h"</span>
+<a name="l00083"></a>00083 <span class="preprocessor">#include "cmd_server.h"</span>
+<a name="l00084"></a>00084 <span class="preprocessor">#include "cmd_squit.h"</span>
+<a name="l00085"></a>00085 <span class="preprocessor">#include "cmd_stats.h"</span>
+<a name="l00086"></a>00086 <span class="preprocessor">#include "cmd_summon.h"</span>
+<a name="l00087"></a>00087 <span class="preprocessor">#include "cmd_time.h"</span>
+<a name="l00088"></a>00088 <span class="preprocessor">#include "cmd_topic.h"</span>
+<a name="l00089"></a>00089 <span class="preprocessor">#include "cmd_trace.h"</span>
+<a name="l00090"></a>00090 <span class="preprocessor">#include "cmd_unloadmodule.h"</span>
+<a name="l00091"></a>00091 <span class="preprocessor">#include "cmd_user.h"</span>
+<a name="l00092"></a>00092 <span class="preprocessor">#include "cmd_userhost.h"</span>
+<a name="l00093"></a>00093 <span class="preprocessor">#include "cmd_users.h"</span>
+<a name="l00094"></a>00094 <span class="preprocessor">#include "cmd_version.h"</span>
+<a name="l00095"></a>00095 <span class="preprocessor">#include "cmd_wallops.h"</span>
+<a name="l00096"></a>00096 <span class="preprocessor">#include "cmd_who.h"</span>
+<a name="l00097"></a>00097 <span class="preprocessor">#include "cmd_whois.h"</span>
+<a name="l00098"></a>00098 <span class="preprocessor">#include "cmd_whowas.h"</span>
+<a name="l00099"></a>00099 <span class="preprocessor">#include "cmd_zline.h"</span>
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include <vector></code><br>
<code>#include "<a class="el" href="users_8h-source.html">users.h</a>"</code><br>
<code>#include "<a class="el" href="channels_8h-source.html">channels.h</a>"</code><br>
+<code>#include "cmd_admin.h"</code><br>
+<code>#include "cmd_away.h"</code><br>
+<code>#include "cmd_commands.h"</code><br>
+<code>#include "cmd_connect.h"</code><br>
+<code>#include "cmd_die.h"</code><br>
+<code>#include "cmd_eline.h"</code><br>
+<code>#include "cmd_gline.h"</code><br>
+<code>#include "cmd_info.h"</code><br>
+<code>#include "cmd_invite.h"</code><br>
+<code>#include "cmd_ison.h"</code><br>
+<code>#include "cmd_join.h"</code><br>
+<code>#include "cmd_kick.h"</code><br>
+<code>#include "cmd_kill.h"</code><br>
+<code>#include "cmd_kline.h"</code><br>
+<code>#include "cmd_links.h"</code><br>
+<code>#include "cmd_list.h"</code><br>
+<code>#include "cmd_loadmodule.h"</code><br>
+<code>#include "cmd_lusers.h"</code><br>
+<code>#include "cmd_map.h"</code><br>
+<code>#include "cmd_modules.h"</code><br>
+<code>#include "cmd_motd.h"</code><br>
+<code>#include "cmd_names.h"</code><br>
+<code>#include "cmd_nick.h"</code><br>
+<code>#include "cmd_notice.h"</code><br>
+<code>#include "cmd_oper.h"</code><br>
+<code>#include "cmd_part.h"</code><br>
+<code>#include "cmd_pass.h"</code><br>
+<code>#include "cmd_ping.h"</code><br>
+<code>#include "cmd_pong.h"</code><br>
+<code>#include "cmd_privmsg.h"</code><br>
+<code>#include "cmd_qline.h"</code><br>
+<code>#include "cmd_quit.h"</code><br>
+<code>#include "cmd_rehash.h"</code><br>
+<code>#include "cmd_restart.h"</code><br>
+<code>#include "cmd_rules.h"</code><br>
+<code>#include "cmd_server.h"</code><br>
+<code>#include "cmd_squit.h"</code><br>
+<code>#include "cmd_stats.h"</code><br>
+<code>#include "cmd_summon.h"</code><br>
+<code>#include "cmd_time.h"</code><br>
+<code>#include "cmd_topic.h"</code><br>
+<code>#include "cmd_trace.h"</code><br>
+<code>#include "cmd_unloadmodule.h"</code><br>
+<code>#include "cmd_user.h"</code><br>
+<code>#include "cmd_userhost.h"</code><br>
+<code>#include "cmd_users.h"</code><br>
+<code>#include "cmd_version.h"</code><br>
+<code>#include "cmd_wallops.h"</code><br>
+<code>#include "cmd_who.h"</code><br>
+<code>#include "cmd_whois.h"</code><br>
+<code>#include "cmd_whowas.h"</code><br>
+<code>#include "cmd_zline.h"</code><br>
<p>
Include dependency graph for commands.h:<p><center><img src="commands_8h__incl.gif" border="0" usemap="#commands.h_map" alt=""></center>
<map name="commands.h_map">
-<area href="users_8h-source.html" shape="rect" coords="159,260,223,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="283,210,368,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="276,362,375,388" alt="">
+<area href="users_8h-source.html" shape="rect" coords="198,260,262,287" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="355,311,440,337" alt="">
</map>
<p>
<a href="commands_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_join</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">CleanFilename</a> (char *name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">These are the handlers for user commands. <a href="#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_part</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kick</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_die</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_restart</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kill</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_summon</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_users</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pass</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_invite</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_topic</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_names</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_privmsg</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_notice</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_info</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_time</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whois</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_quit</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_who</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_wallops</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_list</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rehash</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_lusers</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_admin</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ping</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pong</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_motd</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rules</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_user</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_userhost</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ison</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_away</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whowas</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_trace</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_modules</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_stats</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_connect</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_squit</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_links</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_map</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_oper</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_nick</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_gline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_zline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_qline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_eline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_server</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a> (const char *server)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_loadmodule</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a> (const char *str)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_unloadmodule</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a> (<a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classuserrec.html">userrec</a> *dest, unsigned long signon, unsigned long idle, char *nick)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_commands</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">host_matches_everyone</a> (<a class="el" href="namespaceirc.html#string">std::string</a> mask, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a> (const char *server)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">ip_matches_everyone</a> (<a class="el" href="namespaceirc.html#string">std::string</a> ip, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Functions for u:lined servers. <a href="#is_5Fuline_28const_20char_20_2Aserver_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a> (const char *str)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">nick_matches_everyone</a> (<a class="el" href="namespaceirc.html#string">std::string</a> nick, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Other useful functions. <a href="#duration_28const_20char_20_2Astr_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a> (<a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classuserrec.html">userrec</a> *dest, unsigned long signon, unsigned long idle, char *nick)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">operstrcmp</a> (char *data, char *input)</td></tr>
</table>
<hr><h2>Function Documentation</h2>
-<a class="anchor" name="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29"></a><!-- doxytag: member="commands.h::do_whois" ref="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29" args="(userrec *user, userrec *dest, unsigned long signon, unsigned long idle, char *nick)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void do_whois </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>unsigned long </td>
- <td class="mdname" nowrap> <em>signon</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>unsigned long </td>
- <td class="mdname" nowrap> <em>idle</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>nick</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="duration_28const_20char_20_2Astr_29"></a><!-- doxytag: member="commands.h::duration" ref="duration_28const_20char_20_2Astr_29" args="(const char *str)" --><p>
+<a class="anchor" name="CleanFilename_28char_20_2Aname_29"></a><!-- doxytag: member="commands.h::CleanFilename" ref="CleanFilename_28char_20_2Aname_29" args="(char *name)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">long duration </td>
+ <td class="md" nowrap valign="top">char* CleanFilename </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">const char * </td>
- <td class="mdname1" valign="top" nowrap> <em>str</em> </td>
+ <td class="md" nowrap valign="top">char * </td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
<td>
<p>
-Other useful functions.
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00690">Server::CalcDuration()</a>. </td>
+ </td>
</tr>
</table>
-<a class="anchor" name="handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_admin" ref="handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29"></a><!-- doxytag: member="commands.h::do_whois" ref="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29" args="(userrec *user, userrec *dest, unsigned long signon, unsigned long idle, char *nick)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_admin </td>
+ <td class="md" nowrap valign="top">void do_whois </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
</tr>
<tr>
+ <td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_away" ref="handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_away </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
+ <td class="md" nowrap>unsigned long </td>
+ <td class="mdname" nowrap> <em>signon</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap>unsigned long </td>
+ <td class="mdname" nowrap> <em>idle</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>nick</em></td>
</tr>
<tr>
<td class="md"></td>
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_commands" ref="handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="duration_28const_20char_20_2Astr_29"></a><!-- doxytag: member="commands.h::duration" ref="duration_28const_20char_20_2Astr_29" args="(const char *str)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_commands </td>
+ <td class="md" nowrap valign="top">long duration </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">const char * </td>
+ <td class="mdname1" valign="top" nowrap> <em>str</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
</tr>
</table>
</td>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00689">Server::CalcDuration()</a>. </td>
</tr>
</table>
-<a class="anchor" name="handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_connect" ref="handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::host_matches_everyone" ref="host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29" args="(std::string mask, userrec *user)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_connect </td>
+ <td class="md" nowrap valign="top">bool host_matches_everyone </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
+ <td class="mdname" nowrap> <em>mask</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_die" ref="handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::ip_matches_everyone" ref="ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29" args="(std::string ip, userrec *user)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_die </td>
+ <td class="md" nowrap valign="top">bool ip_matches_everyone </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
+ <td class="mdname" nowrap> <em>ip</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_eline" ref="handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="is_5Fuline_28const_20char_20_2Aserver_29"></a><!-- doxytag: member="commands.h::is_uline" ref="is_5Fuline_28const_20char_20_2Aserver_29" args="(const char *server)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_eline </td>
+ <td class="md" nowrap valign="top">bool is_uline </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">const char * </td>
+ <td class="mdname1" valign="top" nowrap> <em>server</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
</tr>
</table>
</td>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00165">userrec::HasPermission()</a>, <a class="el" href="modules_8cpp-source.html#l00395">Server::IsUlined()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
-<a class="anchor" name="handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_gline" ref="handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::nick_matches_everyone" ref="nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29" args="(std::string nick, userrec *user)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_gline </td>
+ <td class="md" nowrap valign="top">bool nick_matches_everyone </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
+ <td class="mdname" nowrap> <em>nick</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_info" ref="handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29"></a><!-- doxytag: member="commands.h::operstrcmp" ref="operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29" args="(char *data, char *input)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_info </td>
+ <td class="md" nowrap valign="top">int operstrcmp </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top">char * </td>
+ <td class="mdname" nowrap> <em>data</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>input</em></td>
</tr>
<tr>
<td class="md"></td>
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_invite" ref="handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_invite </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_ison" ref="handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_ison </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_join" ref="handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_join </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-These are the handlers for user commands.
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_kick" ref="handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_kick </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_kill" ref="handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_kill </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_kline" ref="handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_kline </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_links" ref="handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_links </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_list" ref="handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_list </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_loadmodule" ref="handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_loadmodule </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_lusers" ref="handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_lusers </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_map" ref="handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_map </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_modules" ref="handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_modules </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_motd" ref="handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_motd </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_names" ref="handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_names </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_nick" ref="handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_nick </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_notice" ref="handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_notice </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_oper" ref="handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_oper </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_part" ref="handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_part </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_pass" ref="handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_pass </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_ping" ref="handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_ping </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_pong" ref="handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_pong </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_privmsg" ref="handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_privmsg </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_qline" ref="handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_qline </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_quit" ref="handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_quit </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_rehash" ref="handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_rehash </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_restart" ref="handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_restart </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_rules" ref="handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_rules </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_server" ref="handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_server </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_squit" ref="handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_squit </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_stats" ref="handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_stats </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_summon" ref="handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_summon </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_time" ref="handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_time </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_topic" ref="handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_topic </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_trace" ref="handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_trace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_unloadmodule" ref="handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_unloadmodule </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_user" ref="handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_user </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_userhost" ref="handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_userhost </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_users" ref="handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_users </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_wallops" ref="handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_wallops </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_who" ref="handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_who </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_whois" ref="handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_whois </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_whowas" ref="handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_whowas </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_zline" ref="handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_zline </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="is_5Fuline_28const_20char_20_2Aserver_29"></a><!-- doxytag: member="commands.h::is_uline" ref="is_5Fuline_28const_20char_20_2Aserver_29" args="(const char *server)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool is_uline </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">const char * </td>
- <td class="mdname1" valign="top" nowrap> <em>server</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Functions for u:lined servers.
-<p>
-
-<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPermission()</a>, <a class="el" href="modules_8cpp-source.html#l00396">Server::IsUlined()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
- </tr>
-</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $users_8h-source.html 159,260 223,287
-rect $channels_8h-source.html 283,210 368,236
-rect $connection_8h-source.html 276,362 375,388
+rect $users_8h-source.html 198,260 262,287
+rect $channels_8h-source.html 355,311 440,337
-0ab6434b364171922a16fbd69fe35c2b
\ No newline at end of file
+a53e792c40a1f2a94bc199e5679cfe9b
\ No newline at end of file
<a name="l00107"></a>00107 <span class="preprocessor">#endif</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span>
<a name="l00109"></a>00109
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Please note: classes serverrec and userrec both inherit from class connection. <a href="classconnection.html#_details">More...</a><br></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
-59ee32ffe8ea5904c6be653a9ecfd51c
\ No newline at end of file
+0e1861daaddbab4521f1d2933037aa81
\ No newline at end of file
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define __CTABLES_H__</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "inspircd_config.h"</span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="base_8h.html">base.h</a>"</span>
-<a name="l00023"></a>00023
-<a name="l00026"></a><a class="code" href="classcommand__t.html">00026</a> <span class="keyword">class </span><a class="code" href="classcommand__t.html">command_t</a> : <span class="keyword">public</span> <a class="code" href="classExtensible.html">Extensible</a>
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="keyword">public</span>:
-<a name="l00031"></a><a class="code" href="classcommand__t.html#command_5BMAXBUF_5D">00031</a> <span class="keywordtype">char</span> <a class="code" href="classcommand__t.html#command_5BMAXBUF_5D">command</a>[MAXBUF];
-<a name="l00034"></a><a class="code" href="classcommand__t.html#handler_5Ffunction">00034</a> <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> *<a class="code" href="classcommand__t.html#handler_5Ffunction">handler_function</a>;
+<a name="l00021"></a>00021 <span class="preprocessor">#include <deque></span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a>;
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="comment">/*typedef void (handlerfunc) (char**, int, userrec*);*/</span>
+<a name="l00026"></a>00026
+<a name="l00029"></a><a class="code" href="classcommand__t.html">00029</a> <span class="keyword">class </span><a class="code" href="classcommand__t.html">command_t</a>
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031 <span class="keyword">public</span>:
+<a name="l00034"></a><a class="code" href="classcommand__t.html#command">00034</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classcommand__t.html#command">command</a>;
<a name="l00037"></a><a class="code" href="classcommand__t.html#flags_5Fneeded">00037</a> <span class="keywordtype">char</span> <a class="code" href="classcommand__t.html#flags_5Fneeded">flags_needed</a>;
<a name="l00040"></a><a class="code" href="classcommand__t.html#min_5Fparams">00040</a> <span class="keywordtype">int</span> <a class="code" href="classcommand__t.html#min_5Fparams">min_params</a>;
<a name="l00043"></a><a class="code" href="classcommand__t.html#use_5Fcount">00043</a> <span class="keywordtype">long</span> <a class="code" href="classcommand__t.html#use_5Fcount">use_count</a>;
<a name="l00046"></a><a class="code" href="classcommand__t.html#total_5Fbytes">00046</a> <span class="keywordtype">long</span> <a class="code" href="classcommand__t.html#total_5Fbytes">total_bytes</a>;
-<a name="l00049"></a><a class="code" href="classcommand__t.html#source_5BMAXBUF_5D">00049</a> <span class="keywordtype">char</span> <a class="code" href="classcommand__t.html#source_5BMAXBUF_5D">source</a>[MAXBUF];
-<a name="l00050"></a>00050 };
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="preprocessor">#endif</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00049"></a><a class="code" href="classcommand__t.html#source">00049</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classcommand__t.html#source">source</a>;
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">00051</a> <a class="code" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a>(<a class="code" href="namespaceirc.html#string">std::string</a> cmd, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minpara) : <a class="code" href="classcommand__t.html#command">command</a>(cmd), <a class="code" href="classcommand__t.html#flags_5Fneeded">flags_needed</a>(flags), <a class="code" href="classcommand__t.html#min_5Fparams">min_params</a>(minpara)
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <a class="code" href="classcommand__t.html#use_5Fcount">use_count</a> = <a class="code" href="classcommand__t.html#total_5Fbytes">total_bytes</a> = 0;
+<a name="l00054"></a>00054 <a class="code" href="classcommand__t.html#source">source</a> = <span class="stringliteral">"<core>"</span>;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">Handle</a>(<span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user) = 0;
+<a name="l00058"></a>00058
+<a name="l00059"></a><a class="code" href="classcommand__t.html#_7Ecommand_5Ft_28_29">00059</a> <span class="keyword">virtual</span> <a class="code" href="classcommand__t.html#_7Ecommand_5Ft_28_29">~command_t</a>() {}
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00062"></a><a class="code" href="ctables_8h.html#command_5Ftable">00062</a> <span class="keyword">typedef</span> std::deque<command_t*> <a class="code" href="ctables_8h.html#command_5Ftable">command_table</a>;
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="nav">
<a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000004.html">include</a></div>
<h1>ctables.h File Reference</h1><code>#include "inspircd_config.h"</code><br>
-<code>#include "<a class="el" href="inspircd_8h-source.html">inspircd.h</a>"</code><br>
-<code>#include "<a class="el" href="base_8h-source.html">base.h</a>"</code><br>
+<code>#include <deque></code><br>
<p>
Include dependency graph for ctables.h:<p><center><img src="ctables_8h__incl.gif" border="0" usemap="#ctables.h_map" alt=""></center>
-<map name="ctables.h_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="132,57,212,84" alt="">
-<area href="base_8h-source.html" shape="rect" coords="141,108,203,135" alt="">
-</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="ctables_8h__dep__incl.gif" border="0" usemap="#ctables.hdep_map" alt=""></center>
<map name="ctables.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="400,58,499,84" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="400,159,499,186" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="400,108,499,135" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="400,184,499,211" alt="">
<area href="modules_8h-source.html" shape="rect" coords="134,108,216,135" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="266,58,351,84" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="266,159,351,185" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="275,209,342,236" alt="">
</map>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html">command_t</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A structure that defines a command. <a href="classcommand__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::deque< <a class="el" href="classcommand__t.html">command_t</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="ctables_8h.html#command_5Ftable">command_table</a></td></tr>
+
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="command_5Ftable"></a><!-- doxytag: member="ctables.h::command_table" ref="command_5Ftable" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef std::deque<<a class="el" href="classcommand__t.html">command_t</a>*> <a class="el" href="ctables_8h.html#command_5Ftable">command_table</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00062">62</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+ </tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 400,58 499,84
-rect $modules_8cpp-source.html 400,159 499,186
+rect $channels_8cpp-source.html 400,108 499,135
+rect $modules_8cpp-source.html 400,184 499,211
rect $modules_8h-source.html 134,108 216,135
-rect $typedefs_8h-source.html 266,58 351,84
+rect $typedefs_8h-source.html 266,159 351,185
+rect $mode_8h-source.html 275,209 342,236
-6858a245b05b677af1e0f72cce2d967f
\ No newline at end of file
+1cb19b8d7a8ce1acf4cdb02da02f3f37
\ No newline at end of file
base referer
-rect $inspircd_8h-source.html 132,57 212,84
-rect $base_8h-source.html 141,108 203,135
-4bac505726c8cdd742349b74377d3ac3
\ No newline at end of file
+40fd955ba897df932e17c7525207162b
\ No newline at end of file
<a name="l00109"></a>00109 };
<a name="l00110"></a>00110
<a name="l00111"></a>00111 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Include dependency graph for cull_list.h:<p><center><img src="cull__list_8h__incl.gif" border="0" usemap="#cull_list.h_map" alt=""></center>
<map name="cull_list.h_map">
<area href="users_8h-source.html" shape="rect" coords="138,260,202,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="262,210,347,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="255,362,354,388" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="262,209,347,236" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="255,412,354,439" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="258,311,351,337" alt="">
</map>
<p>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The CullList class can be used by modules, and is used by the core, to compile large lists of users in preperation to quitting them all at once. <a href="classCullList.html#_details">More...</a><br></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
rect $users_8h-source.html 138,260 202,287
-rect $channels_8h-source.html 262,210 347,236
-rect $connection_8h-source.html 255,362 354,388
+rect $channels_8h-source.html 262,209 347,236
+rect $connection_8h-source.html 255,412 354,439
+rect $hashcomp_8h-source.html 258,311 351,337
-eba432fe5650ee3ba1491a9f1a296ae1
\ No newline at end of file
+15a1b582a0c3999d28743f4a72ab2570
\ No newline at end of file
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000001.html">brain</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000002.html">inspircd-cvs</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000003.html">inspircd</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000005.html">src</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="aes_8h.html">aes.h</a> <a href="aes_8h-source.html">[code]</a></td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html">base.h</a> <a href="base_8h-source.html">[code]</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="channels_8h.html">channels.h</a> <a href="channels_8h-source.html">[code]</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="xline_8h.html">xline.h</a> <a href="xline_8h-source.html">[code]</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html">users.cpp</a> <a href="users_8cpp-source.html">[code]</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000005.html">src</a></div>
-<h3>src → include Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in <a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000005.html">src</a></th><th class="dirtab">Includes file in <a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000004.html">include</a></th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="hashcomp_8h.html">hashcomp.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="channels_8h.html">channels.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="connection_8h.html">connection.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr></table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<h3>src → include Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in <a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000005.html">src</a></th><th class="dirtab">Includes file in <a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000004.html">include</a></th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="hashcomp_8h.html">hashcomp.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="channels_8h.html">channels.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="connection_8h.html">connection.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="hashcomp_8h.html">hashcomp.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr></table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</ul>
</ul>
</ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00097"></a>00097 <span class="keywordtype">void</span> <a class="code" href="classDNS.html#SetNS_28std_3A_3Astring_20dnsserver_29">SetNS</a>(<a class="code" href="namespaceirc.html#string">std::string</a> dnsserver);
<a name="l00098"></a>00098 };
<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00105"></a>00105 <span class="keywordtype">void</span>* <a class="code" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a>(<span class="keywordtype">void</span>* arg);
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classDNS.html">DNS</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The DNS class allows fast nonblocking resolution of hostnames and ip addresses. <a href="classDNS.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a> (void *arg)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">This is the handler function for multi-threaded <a class="el" href="classDNS.html">DNS</a>. <a href="#dns_5Ftask_28void_20_2Aarg_29"></a><br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="dns_5Ftask_28void_20_2Aarg_29"></a><!-- doxytag: member="dns.h::dns_task" ref="dns_5Ftask_28void_20_2Aarg_29" args="(void *arg)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* dns_task </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">void * </td>
+ <td class="mdname1" valign="top" nowrap> <em>arg</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+This is the handler function for multi-threaded <a class="el" href="classDNS.html">DNS</a>.
+<p>
+It cannot be a class member as pthread will not let us create a thread whos handler function is a member of a class (ugh). </td>
+ </tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindexHL" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>InspIRCd File List</h1>Here is a list of all files with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="aes_8h.html">aes.h</a> <a href="aes_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="base_8h.html">base.h</a> <a href="base_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="channels_8cpp.html">channels.cpp</a> <a href="channels_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="channels_8h.html">channels.h</a> <a href="channels_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="users_8h.html">users.h</a> <a href="users_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="xline_8h.html">xline.h</a> <a href="xline_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindexHL" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>AddBuffer()
+<li>a
+: <a class="el" href="classAES.html#a_5BMAX_5FBC_5D">AES</a><li>AddBan()
+: <a class="el" href="classModeParser.html#AddBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>AddBuffer()
: <a class="el" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec</a><li>AddCommand()
-: <a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">Server</a><li>AddELine()
+: <a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">Server</a><li>AddELine()
: <a class="el" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddExtendedListMode()
: <a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server</a><li>AddExtendedMode()
: <a class="el" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">Server</a><li>AddFd()
: <a class="el" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">SocketEngine</a><li>AddGLine()
-: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddItem()
+: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddIOHook()
+: <a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">ServerConfig</a><li>AddItem()
: <a class="el" href="classCullList.html#AddItem_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">CullList</a><li>AddKLine()
: <a class="el" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddQLine()
: <a class="el" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server</a><li>addr
: <a class="el" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a><li>AdminEmail
: <a class="el" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">ServerConfig</a><li>AdminName
: <a class="el" href="classServerConfig.html#AdminName_5BMAXBUF_5D">ServerConfig</a><li>AdminNick
-: <a class="el" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">ServerConfig</a><li>age
-: <a class="el" href="classclassbase.html#age">classbase</a><li>AllowHalfop
+: <a class="el" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">ServerConfig</a><li>AES()
+: <a class="el" href="classAES.html#AES_28_29">AES</a><li>age
+: <a class="el" href="classclassbase.html#age">classbase</a><li>AllowedUmode()
+: <a class="el" href="classModeParser.html#AllowedUmode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_2C_20bool_20serveroverride_29">ModeParser</a><li>AllowHalfop
: <a class="el" href="classServerConfig.html#AllowHalfop">ServerConfig</a><li>Apply()
: <a class="el" href="classCullList.html#Apply_28_29">CullList</a><li>awaymsg
: <a class="el" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindexHL" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindexHL" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classchanrec.html#binarymodes">chanrec</a><li>binip
: <a class="el" href="classDNS.html#binip">DNS</a><li>bits
: <a class="el" href="classBoolSet.html#bits">BoolSet</a><li>BoolSet()
-: <a class="el" href="classBoolSet.html#BoolSet_28char_20bitmask_29">BoolSet</a><li>BufferIsReady()
+: <a class="el" href="classBoolSet.html#BoolSet_28char_20bitmask_29">BoolSet</a><li>BoundPortCount
+: <a class="el" href="classserverstats.html#BoundPortCount">serverstats</a><li>Buffer
+: <a class="el" href="classInspSocket.html#Buffer">InspSocket</a><li>BufferIsReady()
: <a class="el" href="classuserrec.html#BufferIsReady_28_29">userrec</a><li>Build
: <a class="el" href="classVersion.html#Build">Version</a><li>bytes_in
: <a class="el" href="classconnection.html#bytes_5Fin">connection</a><li>bytes_out
: <a class="el" href="classconnection.html#bytes_5Fout">connection</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<li>cache
: <a class="el" href="classConfigReader.html#cache">ConfigReader</a><li>CalcDuration()
: <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server</a><li>CallCommandHandler()
-: <a class="el" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a><li>ChangeGECOS()
+: <a class="el" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a><li>CBC
+: <a class="el" href="classAES.html#_40_30CBC">AES</a><li>CFB
+: <a class="el" href="classAES.html#_40_30CFB">AES</a><li>ChangeGECOS()
: <a class="el" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Server</a><li>ChangeHost()
: <a class="el" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">Server</a><li>ChangeUserNick()
: <a class="el" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">Server</a><li>ChanMode()
: <a class="el" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server</a><li>channel
-: <a class="el" href="classInvited.html#channel_5BCHANMAX_5D">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chanrec()
+: <a class="el" href="classInvited.html#channel">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chanrec()
: <a class="el" href="classchanrec.html#chanrec_28_29">chanrec</a><li>chans
: <a class="el" href="classuserrec.html#chans">userrec</a><li>classbase()
: <a class="el" href="classclassbase.html#classbase_28_29">classbase</a><li>Classes
: <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig</a><li>client
: <a class="el" href="classInspSocket.html#client">InspSocket</a><li>Close()
: <a class="el" href="classInspSocket.html#Close_28_29">InspSocket</a><li>CloseSocket()
-: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>cmds_in
+: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>cmd_mode()
+: <a class="el" href="classcmd__mode.html#cmd_5Fmode_28_29">cmd_mode</a><li>cmds_in
: <a class="el" href="classconnection.html#cmds_5Fin">connection</a><li>cmds_out
: <a class="el" href="classconnection.html#cmds_5Fout">connection</a><li>command
-: <a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command_t</a><li>CommonChannels()
+: <a class="el" href="classcommand__t.html#command">command_t</a><li>command_t()
+: <a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a><li>CommonChannels()
: <a class="el" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server</a><li>compare()
-: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>config_f
+: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>CompressModes()
+: <a class="el" href="classModeParser.html#CompressModes_28std_3A_3Astring_20modes_2C_20bool_20channelmodes_29">ModeParser</a><li>config_f
: <a class="el" href="classServerConfig.html#config_5Ff">ServerConfig</a><li>ConfigReader()
: <a class="el" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">ConfigReader</a><li>ConfProcess()
: <a class="el" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ServerConfig</a><li>ConfValue()
: <a class="el" href="classCullItem.html#CullItem_28userrec_20_2Au_2C_20std_3A_3Astring_20r_29">CullItem</a><li>CullList()
: <a class="el" href="classCullList.html#CullList_28_29">CullList</a><li>custom_modes
: <a class="el" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">chanrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>data
: <a class="el" href="classEvent.html#data">Event</a>, <a class="el" href="classRequest.html#data">Request</a>, <a class="el" href="classHostItem.html#data_5BMAXBUF_5D">HostItem</a><li>debugging
-: <a class="el" href="classServerConfig.html#debugging">ServerConfig</a><li>DelELine()
+: <a class="el" href="classServerConfig.html#debugging">ServerConfig</a><li>Decrypt()
+: <a class="el" href="classAES.html#Decrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>DecryptBlock()
+: <a class="el" href="classAES.html#DecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DEFAULT_BLOCK_SIZE
+: <a class="el" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">AES</a><li>DefDecryptBlock()
+: <a class="el" href="classAES.html#DefDecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DefEncryptBlock()
+: <a class="el" href="classAES.html#DefEncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DelELine()
: <a class="el" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelFd()
: <a class="el" href="classSocketEngine.html#DelFd_28int_20fd_29">SocketEngine</a><li>DelGLine()
-: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelKLine()
+: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelIOHook()
+: <a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">ServerConfig</a><li>DelKLine()
: <a class="el" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelQLine()
: <a class="el" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server</a><li>DelSocket()
: <a class="el" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server</a><li>DelUser()
: <a class="el" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">ServerConfig</a><li>DumpErrors()
: <a class="el" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader</a><li>duration
: <a class="el" href="classXLine.html#duration">XLine</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>Email
-: <a class="el" href="classAdmin.html#Email">Admin</a><li>EngineHandle
+<li>ECB
+: <a class="el" href="classAES.html#_40_30ECB">AES</a><li>Email
+: <a class="el" href="classAdmin.html#Email">Admin</a><li>Encrypt()
+: <a class="el" href="classAES.html#Encrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>EncryptBlock()
+: <a class="el" href="classAES.html#EncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>EngineHandle
: <a class="el" href="classSocketEngine.html#EngineHandle">SocketEngine</a><li>EnumConf()
: <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig</a><li>Enumerate()
: <a class="el" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader</a><li>EnumerateValues()
: <a class="el" href="classExtensible.html#Extend_28std_3A_3Astring_20key_2C_20char_20_2Ap_29">Extensible</a><li>Extension_Items
: <a class="el" href="classExtensible.html#Extension_5FItems">Extensible</a><li>ExtMode()
: <a class="el" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">ExtMode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classVersion.html#Flags">Version</a><li>flags_needed
: <a class="el" href="classcommand__t.html#flags_5Fneeded">command_t</a><li>flood
: <a class="el" href="classuserrec.html#flood">userrec</a>, <a class="el" href="classConnectClass.html#flood">ConnectClass</a><li>FlushWriteBuf()
-: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>ForwardLookup()
+: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>FlushWriteBuffer()
+: <a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">InspSocket</a><li>ForwardLookup()
: <a class="el" href="classDNS.html#ForwardLookup_28std_3A_3Astring_20host_29">DNS</a><li>fullname
: <a class="el" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>Get()
: <a class="el" href="classBoolSet.html#Get_28int_20number_29">BoolSet</a><li>GetAdmin()
-: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBuffer()
+: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBlockSize()
+: <a class="el" href="classAES.html#GetBlockSize_28_29">AES</a><li>GetBuffer()
: <a class="el" href="classuserrec.html#GetBuffer_28_29">userrec</a><li>GetConfig()
: <a class="el" href="classServer.html#GetConfig_28_29">Server</a><li>GetData()
: <a class="el" href="classEvent.html#GetData_28_29">Event</a>, <a class="el" href="classRequest.html#GetData_28_29">Request</a><li>GetDest()
: <a class="el" href="classDNS.html#GetFD_28_29">DNS</a><li>GetFullHost()
: <a class="el" href="classuserrec.html#GetFullHost_28_29">userrec</a><li>GetFullRealHost()
: <a class="el" href="classuserrec.html#GetFullRealHost_28_29">userrec</a><li>GetInviteList()
-: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIP()
-: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetLine()
+: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIOHook()
+: <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig</a><li>GetIP()
+: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetKeyLength()
+: <a class="el" href="classAES.html#GetKeyLength_28_29">AES</a><li>GetLine()
: <a class="el" href="classFileReader.html#GetLine_28int_20x_29">FileReader</a><li>GetModeParameter()
: <a class="el" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec</a><li>GetName()
: <a class="el" href="classSocketEngine.html#GetName_28_29">SocketEngine</a><li>GetNetworkName()
: <a class="el" href="classCullItem.html#GetReason_28_29">CullItem</a><li>GetResult()
: <a class="el" href="classDNS.html#GetResult_28_29">DNS</a><li>GetResultIP()
: <a class="el" href="classDNS.html#GetResultIP_28_29">DNS</a><li>GetRevision()
-: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetServerDescription()
+: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetRounds()
+: <a class="el" href="classAES.html#GetRounds_28_29">AES</a><li>GetServerDescription()
: <a class="el" href="classServer.html#GetServerDescription_28_29">Server</a><li>GetServerName()
: <a class="el" href="classServer.html#GetServerName_28_29">Server</a><li>GetSource()
: <a class="el" href="classEvent.html#GetSource_28_29">Event</a>, <a class="el" href="classRequest.html#GetSource_28_29">Request</a><li>GetState()
: <a class="el" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server</a>, <a class="el" href="classchanrec.html#GetUsers_28_29">chanrec</a><li>GetVersion()
: <a class="el" href="classServer.html#GetVersion_28_29">Server</a>, <a class="el" href="classModule.html#GetVersion_28_29">Module</a><li>GetVersionString()
: <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd</a><li>GetWriteError()
-: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a><li>GiveHops()
+: <a class="el" href="classModeParser.html#GiveHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveOps()
+: <a class="el" href="classModeParser.html#GiveOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveVoice()
+: <a class="el" href="classModeParser.html#GiveVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handler_function
-: <a class="el" href="classcommand__t.html#handler_5Ffunction">command_t</a><li>haspassed
+<li>Handle()
+: <a class="el" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">cmd_mode</a>, <a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">command_t</a><li>haspassed
: <a class="el" href="classconnection.html#haspassed">connection</a><li>HasPermission()
-: <a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">userrec</a><li>HasResult()
+: <a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">userrec</a><li>HasResult()
: <a class="el" href="classDNS.html#HasResult_28int_20fd_29">DNS</a><li>host
: <a class="el" href="classWhoWasUser.html#host_5B_31_36_30_5D">WhoWasUser</a>, <a class="el" href="classConnectClass.html#host_5BMAXBUF_5D">ConnectClass</a>, <a class="el" href="classInspSocket.html#host">InspSocket</a>, <a class="el" href="classconnection.html#host_5B_31_36_30_5D">connection</a><li>HostItem()
: <a class="el" href="classHostItem.html#HostItem_28_29">HostItem</a><li>hostmask
: <a class="el" href="classELine.html#hostmask_5B_32_30_30_5D">ELine</a>, <a class="el" href="classGLine.html#hostmask_5B_32_30_30_5D">GLine</a>, <a class="el" href="classKLine.html#hostmask_5B_32_30_30_5D">KLine</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>ibuf
-: <a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">InspSocket</a><li>id
+: <a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">InspSocket</a><li>id
: <a class="el" href="classEvent.html#id">Event</a><li>ident
: <a class="el" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">userrec</a><li>idle_lastmsg
: <a class="el" href="classconnection.html#idle_5Flastmsg">connection</a><li>include_stack
: <a class="el" href="classchanrec.html#internal_5Fuserlist">chanrec</a><li>Invert()
: <a class="el" href="classBoolSet.html#Invert_28int_20number_29">BoolSet</a><li>invites
: <a class="el" href="classuserrec.html#invites">userrec</a><li>InviteTo()
-: <a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">userrec</a><li>IP
-: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ip
-: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>ipaddr
+: <a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IOHookModule
+: <a class="el" href="classServerConfig.html#IOHookModule">ServerConfig</a><li>ip
+: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>IP
+: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ipaddr
: <a class="el" href="classZLine.html#ipaddr_5B_34_30_5D">ZLine</a><li>is_global
: <a class="el" href="classQLine.html#is_5Fglobal">QLine</a>, <a class="el" href="classZLine.html#is_5Fglobal">ZLine</a><li>IsCustomModeSet()
: <a class="el" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec</a><li>IsInvited()
-: <a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">userrec</a><li>IsNick()
+: <a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IsNick()
: <a class="el" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server</a><li>IsOnChannel()
: <a class="el" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server</a><li>IsUlined()
: <a class="el" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server</a><li>IsValidMask()
: <a class="el" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server</a><li>IsValidModuleCommand()
: <a class="el" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
<li>JoinUserToChannel()
: <a class="el" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<li>ke_list
: <a class="el" href="classSocketEngine.html#ke_5Flist_5B_36_35_35_33_35_5D">SocketEngine</a><li>key
: <a class="el" href="classchanrec.html#key_5B_33_32_5D">chanrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindexHL" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindexHL" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classServerConfig.html#log_5Ffile">ServerConfig</a><li>LogLevel
: <a class="el" href="classServerConfig.html#LogLevel">ServerConfig</a><li>lt()
: <a class="el" href="structirc_1_1irc__char__traits.html#lt_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Major
-: <a class="el" href="classVersion.html#Major">Version</a><li>MatchText()
-: <a class="el" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server</a><li>MaxConn
+<li>m_bKeyInit
+: <a class="el" href="classAES.html#m_5FbKeyInit">AES</a><li>m_blockSize
+: <a class="el" href="classAES.html#m_5FblockSize">AES</a><li>m_chain
+: <a class="el" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_chain0
+: <a class="el" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_iROUNDS
+: <a class="el" href="classAES.html#m_5FiROUNDS">AES</a><li>m_Kd
+: <a class="el" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_Ke
+: <a class="el" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_keylength
+: <a class="el" href="classAES.html#m_5Fkeylength">AES</a><li>Major
+: <a class="el" href="classVersion.html#Major">Version</a><li>MakeKey()
+: <a class="el" href="classAES.html#MakeKey_28char_20const_20_2Akey_2C_20char_20const_20_2Achain_2C_20int_20keylength_3DDEFAULT_5FBLOCK_5FSIZE_2C_20int_20blockSize_3DDEFAULT_5FBLOCK_5FSIZE_29">AES</a><li>MakeLowerMap()
+: <a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">InspIRCd</a><li>MatchText()
+: <a class="el" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server</a><li>MAX_BC
+: <a class="el" href="classAES.html#_40_32MAX_5FBC">AES</a><li>MAX_BLOCK_SIZE
+: <a class="el" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">AES</a><li>MAX_KC
+: <a class="el" href="classAES.html#_40_32MAX_5FKC">AES</a><li>MAX_ROUNDS
+: <a class="el" href="classAES.html#_40_32MAX_5FROUNDS">AES</a><li>MaxConn
: <a class="el" href="classServerConfig.html#MaxConn">ServerConfig</a><li>MaxWhoResults
: <a class="el" href="classServerConfig.html#MaxWhoResults">ServerConfig</a><li>min_params
: <a class="el" href="classcommand__t.html#min_5Fparams">command_t</a><li>Minor
: <a class="el" href="classVersion.html#Minor">Version</a><li>mode
: <a class="el" href="classModeParameter.html#mode">ModeParameter</a><li>modechar
-: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>MODERR
+: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>ModeGrok
+: <a class="el" href="classInspIRCd.html#ModeGrok">InspIRCd</a><li>MODERR
: <a class="el" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">InspIRCd</a><li>modes
: <a class="el" href="classuserrec.html#modes_5B_35_34_5D">userrec</a><li>ModPath
: <a class="el" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ServerConfig</a><li>Module()
: <a class="el" href="classModule.html#Module_28Server_20_2AMe_29">Module</a><li>module_names
: <a class="el" href="classServerConfig.html#module_5Fnames">ServerConfig</a><li>ModuleError()
: <a class="el" href="classInspIRCd.html#ModuleError_28_29">InspIRCd</a><li>ModuleFactory()
-: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a><li>motd
-: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>MOTD
-: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>MyExecutable
+: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a><li>MOTD
+: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>motd
+: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>Mul()
+: <a class="el" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">AES</a><li>Mul4()
+: <a class="el" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">AES</a><li>MyExecutable
: <a class="el" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">ServerConfig</a><li>myfd
: <a class="el" href="classDNS.html#myfd">DNS</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>n_matches
-: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>name
-: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>Name
-: <a class="el" href="classAdmin.html#Name">Admin</a><li>ne()
+: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>Name
+: <a class="el" href="classAdmin.html#Name">Admin</a><li>name
+: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>ne()
: <a class="el" href="structirc_1_1irc__char__traits.html#ne_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a><li>needsoper
: <a class="el" href="classExtMode.html#needsoper">ExtMode</a><li>NetBufferSize
: <a class="el" href="classServerConfig.html#NetBufferSize">ServerConfig</a><li>Network
: <a class="el" href="classServerConfig.html#Network_5BMAXBUF_5D">ServerConfig</a><li>next
-: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>nick
-: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>Nick
-: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nofork
+: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>Nick
+: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nick
+: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>nofork
: <a class="el" href="classServerConfig.html#nofork">ServerConfig</a><li>nping
: <a class="el" href="classconnection.html#nping">connection</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classBoolSet.html#operator_3D_28BoolSet_20other_29">BoolSet</a><li>operator==()
: <a class="el" href="classBoolSet.html#operator_3D_3D_28BoolSet_20other_29">BoolSet</a><li>operator|()
: <a class="el" href="classBoolSet.html#operator_7C_28BoolSet_20other_29">BoolSet</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<li>parameter
: <a class="el" href="classModeParameter.html#parameter_5BMAXBUF_5D">ModeParameter</a><li>params_when_off
: <a class="el" href="classExtMode.html#params_5Fwhen_5Foff">ExtMode</a><li>params_when_on
-: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>PartUserFromChannel()
+: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>Parser
+: <a class="el" href="classInspIRCd.html#Parser">InspIRCd</a><li>PartUserFromChannel()
: <a class="el" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server</a><li>pass
: <a class="el" href="classConnectClass.html#pass_5BMAXBUF_5D">ConnectClass</a><li>password
: <a class="el" href="classuserrec.html#password_5BMAXBUF_5D">userrec</a><li>PID
: <a class="el" href="classInspSocket.html#Poll_28_29">InspSocket</a><li>port
: <a class="el" href="classInspSocket.html#port">InspSocket</a>, <a class="el" href="classconnection.html#port">connection</a><li>ports
: <a class="el" href="classServerConfig.html#ports_5B_32_35_35_5D">ServerConfig</a><li>PrefixQuit
-: <a class="el" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">ServerConfig</a><li>ProtoSendMetaData()
+: <a class="el" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">ServerConfig</a><li>ProcessModes()
+: <a class="el" href="classModeParser.html#ProcessModes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">ModeParser</a><li>ProcessModuleUmode()
+: <a class="el" href="classModeParser.html#ProcessModuleUmode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">ModeParser</a><li>ProtoSendMetaData()
: <a class="el" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module</a><li>ProtoSendMode()
: <a class="el" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module</a><li>PseudoToUser()
: <a class="el" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
<li>QuitUser()
: <a class="el" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classconnection.html#registered">connection</a><li>registration_timeout
: <a class="el" href="classConnectClass.html#registration_5Ftimeout">ConnectClass</a><li>RehashServer()
: <a class="el" href="classServer.html#RehashServer_28_29">Server</a><li>RemoveInvite()
-: <a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">userrec</a><li>Request()
+: <a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">userrec</a><li>Request()
: <a class="el" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a><li>reset_due
-: <a class="el" href="classuserrec.html#reset_5Fdue">userrec</a><li>restartpass
+: <a class="el" href="classuserrec.html#reset_5Fdue">userrec</a><li>ResetChain()
+: <a class="el" href="classAES.html#ResetChain_28_29">AES</a><li>restartpass
: <a class="el" href="classServerConfig.html#restartpass_5BMAXBUF_5D">ServerConfig</a><li>result
: <a class="el" href="classDNS.html#result">DNS</a><li>ReverseLookup()
: <a class="el" href="classDNS.html#ReverseLookup_28std_3A_3Astring_20ip_29">DNS</a><li>Revision
-: <a class="el" href="classVersion.html#Revision">Version</a><li>rules
-: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a><li>RULES
-: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a><li>Run()
+: <a class="el" href="classVersion.html#Revision">Version</a><li>RULES
+: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a><li>rules
+: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a><li>Run()
: <a class="el" href="classInspIRCd.html#Run_28_29">InspIRCd</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>Send()
+<li>SE
+: <a class="el" href="classInspIRCd.html#SE">InspIRCd</a><li>Send()
: <a class="el" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server</a>, <a class="el" href="classEvent.html#Send_28_29">Event</a>, <a class="el" href="classRequest.html#Send_28_29">Request</a>, <a class="el" href="classModuleMessage.html#Send_28_29_3D_30">ModuleMessage</a><li>SendChannel()
: <a class="el" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">Server</a><li>SendChannelServerNotice()
: <a class="el" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">Server</a><li>SendCommon()
: <a class="el" href="classWhoWasUser.html#server_5B_32_35_36_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#server">userrec</a>, <a class="el" href="classInspSocket.html#server">InspSocket</a><li>Server()
: <a class="el" href="classServer.html#Server_28_29">Server</a><li>ServerConfig()
: <a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a><li>ServerDesc
-: <a class="el" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerConfig</a><li>ServerName
+: <a class="el" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerConfig</a><li>ServerMode()
+: <a class="el" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ModeParser</a><li>ServerName
: <a class="el" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerConfig</a><li>serverstats()
: <a class="el" href="classserverstats.html#serverstats_28_29">serverstats</a><li>Set()
: <a class="el" href="classBoolSet.html#Set_28int_20number_29">BoolSet</a><li>set_by
: <a class="el" href="classInspSocket.html#SetState_28InspSocketState_20s_29">InspSocket</a><li>SetWriteError()
: <a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec</a><li>Shrink()
: <a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Extensible</a><li>signon
-: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>SocketEngine()
+: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>sm_alog
+: <a class="el" href="classAES.html#sm_5Falog_5B_32_35_36_5D">AES</a><li>sm_chain0
+: <a class="el" href="classAES.html#sm_5Fchain_30">AES</a><li>sm_log
+: <a class="el" href="classAES.html#sm_5Flog_5B_32_35_36_5D">AES</a><li>sm_rcon
+: <a class="el" href="classAES.html#sm_5Frcon_5B_33_30_5D">AES</a><li>sm_S
+: <a class="el" href="classAES.html#sm_5FS_5B_32_35_36_5D">AES</a><li>sm_shifts
+: <a class="el" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">AES</a><li>sm_Si
+: <a class="el" href="classAES.html#sm_5FSi_5B_32_35_36_5D">AES</a><li>sm_T1
+: <a class="el" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">AES</a><li>sm_T2
+: <a class="el" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">AES</a><li>sm_T3
+: <a class="el" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">AES</a><li>sm_T4
+: <a class="el" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">AES</a><li>sm_T5
+: <a class="el" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">AES</a><li>sm_T6
+: <a class="el" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">AES</a><li>sm_T7
+: <a class="el" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">AES</a><li>sm_T8
+: <a class="el" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">AES</a><li>sm_U1
+: <a class="el" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">AES</a><li>sm_U2
+: <a class="el" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">AES</a><li>sm_U3
+: <a class="el" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">AES</a><li>sm_U4
+: <a class="el" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">AES</a><li>SocketEngine()
: <a class="el" href="classSocketEngine.html#SocketEngine_28_29">SocketEngine</a><li>SoftLimit
: <a class="el" href="classServerConfig.html#SoftLimit">ServerConfig</a><li>source
-: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">command_t</a><li>startup_time
+: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source">command_t</a><li>startup_time
: <a class="el" href="classInspIRCd.html#startup_5Ftime">InspIRCd</a><li>state
-: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>statsAccept
+: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>stats
+: <a class="el" href="classInspIRCd.html#stats">InspIRCd</a><li>statsAccept
: <a class="el" href="classserverstats.html#statsAccept">serverstats</a><li>statsCollisions
: <a class="el" href="classserverstats.html#statsCollisions">serverstats</a><li>statsConnects
: <a class="el" href="classserverstats.html#statsConnects">serverstats</a><li>statsDns
: <a class="el" href="classserverstats.html#statsRefused">serverstats</a><li>statsSent
: <a class="el" href="classserverstats.html#statsSent">serverstats</a><li>statsUnknown
: <a class="el" href="classserverstats.html#statsUnknown">serverstats</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>t
-: <a class="el" href="classDNS.html#t">DNS</a><li>threshold
+: <a class="el" href="classDNS.html#t">DNS</a>, <a class="el" href="classAES.html#t_5BMAX_5FBC_5D">AES</a><li>TakeBan()
+: <a class="el" href="classModeParser.html#TakeBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeHops()
+: <a class="el" href="classModeParser.html#TakeHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeOps()
+: <a class="el" href="classModeParser.html#TakeOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeVoice()
+: <a class="el" href="classModeParser.html#TakeVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>threshold
: <a class="el" href="classuserrec.html#threshold">userrec</a>, <a class="el" href="classConnectClass.html#threshold">ConnectClass</a><li>Timeout()
: <a class="el" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket</a><li>timeout
: <a class="el" href="classuserrec.html#timeout">userrec</a>, <a class="el" href="classInspSocket.html#timeout">InspSocket</a><li>timeout_end
-: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>topic
+: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>tk
+: <a class="el" href="classAES.html#tk_5BMAX_5FKC_5D">AES</a><li>topic
: <a class="el" href="classchanrec.html#topic_5BMAXBUF_5D">chanrec</a><li>topicset
: <a class="el" href="classchanrec.html#topicset">chanrec</a><li>total_bytes
: <a class="el" href="classcommand__t.html#total_5Fbytes">command_t</a><li>ts
: <a class="el" href="classSocketEngine.html#ts">SocketEngine</a><li>type
: <a class="el" href="classConnectClass.html#type">ConnectClass</a>, <a class="el" href="classExtMode.html#type">ExtMode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classCullItem.html#user">CullItem</a><li>userrec()
: <a class="el" href="classuserrec.html#userrec_28_29">userrec</a><li>UserToPseudo()
: <a class="el" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<li>Verify()
: <a class="el" href="classConfigReader.html#Verify_28_29">ConfigReader</a><li>Version()
: <a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classSocketEngine.html#Wait_28std_3A_3Avector_3C_20int_20_3E_20_26fdlist_29">SocketEngine</a><li>Write()
: <a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket</a><li>WriteError
: <a class="el" href="classuserrec.html#WriteError">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindexHL" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindexHL" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
-<li>~chanrec()
+<li>~AES()
+: <a class="el" href="classAES.html#_7EAES_28_29">AES</a><li>~chanrec()
: <a class="el" href="classchanrec.html#_7Echanrec_28_29">chanrec</a><li>~classbase()
-: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~ConfigReader()
+: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~command_t()
+: <a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">command_t</a><li>~ConfigReader()
: <a class="el" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader</a><li>~DNS()
: <a class="el" href="classDNS.html#_7EDNS_28_29">DNS</a><li>~FileReader()
: <a class="el" href="classFileReader.html#_7EFileReader_28_29">FileReader</a><li>~HostItem()
: <a class="el" href="classSocketEngine.html#_7ESocketEngine_28_29">SocketEngine</a><li>~ucrec()
: <a class="el" href="classucrec.html#_7Eucrec_28_29">ucrec</a><li>~userrec()
: <a class="el" href="classuserrec.html#_7Euserrec_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindexHL" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindexHL" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>AddBuffer()
+<li>AddBan()
+: <a class="el" href="classModeParser.html#AddBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>AddBuffer()
: <a class="el" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec</a><li>AddCommand()
-: <a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">Server</a><li>AddELine()
+: <a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">Server</a><li>AddELine()
: <a class="el" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddExtendedListMode()
: <a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server</a><li>AddExtendedMode()
: <a class="el" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">Server</a><li>AddFd()
: <a class="el" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">SocketEngine</a><li>AddGLine()
-: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddItem()
+: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddIOHook()
+: <a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">ServerConfig</a><li>AddItem()
: <a class="el" href="classCullList.html#AddItem_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">CullList</a><li>AddKLine()
: <a class="el" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddQLine()
: <a class="el" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server</a><li>AddSocket()
: <a class="el" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">chanrec</a><li>AddWriteBuf()
: <a class="el" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">userrec</a><li>AddZLine()
: <a class="el" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">Server</a><li>Admin()
-: <a class="el" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a><li>Apply()
+: <a class="el" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a><li>AES()
+: <a class="el" href="classAES.html#AES_28_29">AES</a><li>AllowedUmode()
+: <a class="el" href="classModeParser.html#AllowedUmode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_2C_20bool_20serveroverride_29">ModeParser</a><li>Apply()
: <a class="el" href="classCullList.html#Apply_28_29">CullList</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindexHL" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindexHL" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<li>BoolSet()
: <a class="el" href="classBoolSet.html#BoolSet_28char_20bitmask_29">BoolSet</a><li>BufferIsReady()
: <a class="el" href="classuserrec.html#BufferIsReady_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classuserrec.html#ClearBuffer_28_29">userrec</a><li>ClearStack()
: <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig</a><li>Close()
: <a class="el" href="classInspSocket.html#Close_28_29">InspSocket</a><li>CloseSocket()
-: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>CommonChannels()
+: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>cmd_mode()
+: <a class="el" href="classcmd__mode.html#cmd_5Fmode_28_29">cmd_mode</a><li>command_t()
+: <a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a><li>CommonChannels()
: <a class="el" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server</a><li>compare()
-: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>ConfigReader()
+: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>CompressModes()
+: <a class="el" href="classModeParser.html#CompressModes_28std_3A_3Astring_20modes_2C_20bool_20channelmodes_29">ModeParser</a><li>ConfigReader()
: <a class="el" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">ConfigReader</a><li>ConfProcess()
: <a class="el" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ServerConfig</a><li>ConfValue()
: <a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ServerConfig</a><li>ConfValueEnum()
: <a class="el" href="classModuleFactory.html#CreateModule_28Server_20_2AMe_29_3D_30">ModuleFactory</a><li>CullItem()
: <a class="el" href="classCullItem.html#CullItem_28userrec_20_2Au_2C_20std_3A_3Astring_20r_29">CullItem</a><li>CullList()
: <a class="el" href="classCullList.html#CullList_28_29">CullList</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>DelELine()
+<li>Decrypt()
+: <a class="el" href="classAES.html#Decrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>DecryptBlock()
+: <a class="el" href="classAES.html#DecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DefDecryptBlock()
+: <a class="el" href="classAES.html#DefDecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DefEncryptBlock()
+: <a class="el" href="classAES.html#DefEncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DelELine()
: <a class="el" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelFd()
: <a class="el" href="classSocketEngine.html#DelFd_28int_20fd_29">SocketEngine</a><li>DelGLine()
-: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelKLine()
+: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelIOHook()
+: <a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">ServerConfig</a><li>DelKLine()
: <a class="el" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelQLine()
: <a class="el" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server</a><li>DelSocket()
: <a class="el" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server</a><li>DelUser()
: <a class="el" href="classDNS.html#dns_5Fntoa_34_5Fr_28const_20in_5Faddr_20_2Aconst_20ip_29">DNS</a><li>dns_ntoa4_s()
: <a class="el" href="classDNS.html#dns_5Fntoa_34_5Fs_28const_20in_5Faddr_20_2Aconst_20ip_2C_20char_20_2Aconst_20result_29">DNS</a><li>DumpErrors()
: <a class="el" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>EnumConf()
+<li>Encrypt()
+: <a class="el" href="classAES.html#Encrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>EncryptBlock()
+: <a class="el" href="classAES.html#EncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>EnumConf()
: <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig</a><li>Enumerate()
: <a class="el" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader</a><li>EnumerateValues()
: <a class="el" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">ConfigReader</a><li>EnumValues()
: <a class="el" href="classFileReader.html#Exists_28_29">FileReader</a><li>Extend()
: <a class="el" href="classExtensible.html#Extend_28std_3A_3Astring_20key_2C_20char_20_2Ap_29">Extensible</a><li>ExtMode()
: <a class="el" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">ExtMode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classServer.html#FindDescriptor_28int_20socket_29">Server</a><li>FindModule()
: <a class="el" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">Server</a><li>FindNick()
: <a class="el" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">Server</a><li>FlushWriteBuf()
-: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>ForwardLookup()
+: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>FlushWriteBuffer()
+: <a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">InspSocket</a><li>ForwardLookup()
: <a class="el" href="classDNS.html#ForwardLookup_28std_3A_3Astring_20host_29">DNS</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>Get()
: <a class="el" href="classBoolSet.html#Get_28int_20number_29">BoolSet</a><li>GetAdmin()
-: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBuffer()
+: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBlockSize()
+: <a class="el" href="classAES.html#GetBlockSize_28_29">AES</a><li>GetBuffer()
: <a class="el" href="classuserrec.html#GetBuffer_28_29">userrec</a><li>GetConfig()
: <a class="el" href="classServer.html#GetConfig_28_29">Server</a><li>GetData()
: <a class="el" href="classEvent.html#GetData_28_29">Event</a>, <a class="el" href="classRequest.html#GetData_28_29">Request</a><li>GetDest()
: <a class="el" href="classDNS.html#GetFD_28_29">DNS</a><li>GetFullHost()
: <a class="el" href="classuserrec.html#GetFullHost_28_29">userrec</a><li>GetFullRealHost()
: <a class="el" href="classuserrec.html#GetFullRealHost_28_29">userrec</a><li>GetInviteList()
-: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIP()
-: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetLine()
+: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIOHook()
+: <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig</a><li>GetIP()
+: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetKeyLength()
+: <a class="el" href="classAES.html#GetKeyLength_28_29">AES</a><li>GetLine()
: <a class="el" href="classFileReader.html#GetLine_28int_20x_29">FileReader</a><li>GetModeParameter()
: <a class="el" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec</a><li>GetName()
: <a class="el" href="classSocketEngine.html#GetName_28_29">SocketEngine</a><li>GetNetworkName()
: <a class="el" href="classCullItem.html#GetReason_28_29">CullItem</a><li>GetResult()
: <a class="el" href="classDNS.html#GetResult_28_29">DNS</a><li>GetResultIP()
: <a class="el" href="classDNS.html#GetResultIP_28_29">DNS</a><li>GetRevision()
-: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetServerDescription()
+: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetRounds()
+: <a class="el" href="classAES.html#GetRounds_28_29">AES</a><li>GetServerDescription()
: <a class="el" href="classServer.html#GetServerDescription_28_29">Server</a><li>GetServerName()
: <a class="el" href="classServer.html#GetServerName_28_29">Server</a><li>GetSource()
: <a class="el" href="classEvent.html#GetSource_28_29">Event</a>, <a class="el" href="classRequest.html#GetSource_28_29">Request</a><li>GetState()
: <a class="el" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server</a>, <a class="el" href="classchanrec.html#GetUsers_28_29">chanrec</a><li>GetVersion()
: <a class="el" href="classServer.html#GetVersion_28_29">Server</a>, <a class="el" href="classModule.html#GetVersion_28_29">Module</a><li>GetVersionString()
: <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd</a><li>GetWriteError()
-: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a><li>GiveHops()
+: <a class="el" href="classModeParser.html#GiveHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveOps()
+: <a class="el" href="classModeParser.html#GiveOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveVoice()
+: <a class="el" href="classModeParser.html#GiveVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>HasPermission()
-: <a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">userrec</a><li>HasResult()
+<li>Handle()
+: <a class="el" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">cmd_mode</a>, <a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">command_t</a><li>HasPermission()
+: <a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">userrec</a><li>HasResult()
: <a class="el" href="classDNS.html#HasResult_28int_20fd_29">DNS</a><li>HostItem()
: <a class="el" href="classHostItem.html#HostItem_28_29">HostItem</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a><li>InspSocket()
: <a class="el" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">InspSocket</a><li>Invert()
: <a class="el" href="classBoolSet.html#Invert_28int_20number_29">BoolSet</a><li>InviteTo()
-: <a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">userrec</a><li>IsCustomModeSet()
+: <a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IsCustomModeSet()
: <a class="el" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec</a><li>IsInvited()
-: <a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">userrec</a><li>IsNick()
+: <a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IsNick()
: <a class="el" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server</a><li>IsOnChannel()
: <a class="el" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server</a><li>IsUlined()
: <a class="el" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server</a><li>IsValidMask()
: <a class="el" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server</a><li>IsValidModuleCommand()
: <a class="el" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
<li>JoinUserToChannel()
: <a class="el" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">InspIRCd</a><li>Log()
: <a class="el" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Server</a><li>lt()
: <a class="el" href="structirc_1_1irc__char__traits.html#lt_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>MatchText()
+<li>MakeKey()
+: <a class="el" href="classAES.html#MakeKey_28char_20const_20_2Akey_2C_20char_20const_20_2Achain_2C_20int_20keylength_3DDEFAULT_5FBLOCK_5FSIZE_2C_20int_20blockSize_3DDEFAULT_5FBLOCK_5FSIZE_29">AES</a><li>MakeLowerMap()
+: <a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">InspIRCd</a><li>MatchText()
: <a class="el" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server</a><li>Module()
: <a class="el" href="classModule.html#Module_28Server_20_2AMe_29">Module</a><li>ModuleError()
: <a class="el" href="classInspIRCd.html#ModuleError_28_29">InspIRCd</a><li>ModuleFactory()
-: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a><li>Mul()
+: <a class="el" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">AES</a><li>Mul4()
+: <a class="el" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">AES</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>ne()
: <a class="el" href="structirc_1_1irc__char__traits.html#ne_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classBoolSet.html#operator_3D_28BoolSet_20other_29">BoolSet</a><li>operator==()
: <a class="el" href="classBoolSet.html#operator_3D_3D_28BoolSet_20other_29">BoolSet</a><li>operator|()
: <a class="el" href="classBoolSet.html#operator_7C_28BoolSet_20other_29">BoolSet</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>PartUserFromChannel()
: <a class="el" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server</a><li>Poll()
-: <a class="el" href="classInspSocket.html#Poll_28_29">InspSocket</a><li>ProtoSendMetaData()
+: <a class="el" href="classInspSocket.html#Poll_28_29">InspSocket</a><li>ProcessModes()
+: <a class="el" href="classModeParser.html#ProcessModes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">ModeParser</a><li>ProcessModuleUmode()
+: <a class="el" href="classModeParser.html#ProcessModuleUmode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">ModeParser</a><li>ProtoSendMetaData()
: <a class="el" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module</a><li>ProtoSendMode()
: <a class="el" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module</a><li>PseudoToUser()
: <a class="el" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
<li>QuitUser()
: <a class="el" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ConfigReader</a><li>ReadValue()
: <a class="el" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader</a><li>RehashServer()
: <a class="el" href="classServer.html#RehashServer_28_29">Server</a><li>RemoveInvite()
-: <a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">userrec</a><li>Request()
-: <a class="el" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a><li>ReverseLookup()
+: <a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">userrec</a><li>Request()
+: <a class="el" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a><li>ResetChain()
+: <a class="el" href="classAES.html#ResetChain_28_29">AES</a><li>ReverseLookup()
: <a class="el" href="classDNS.html#ReverseLookup_28std_3A_3Astring_20ip_29">DNS</a><li>Run()
: <a class="el" href="classInspIRCd.html#Run_28_29">InspIRCd</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">Server</a><li>SendWallops()
: <a class="el" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">Server</a><li>Server()
: <a class="el" href="classServer.html#Server_28_29">Server</a><li>ServerConfig()
-: <a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a><li>serverstats()
+: <a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a><li>ServerMode()
+: <a class="el" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ModeParser</a><li>serverstats()
: <a class="el" href="classserverstats.html#serverstats_28_29">serverstats</a><li>Set()
: <a class="el" href="classBoolSet.html#Set_28int_20number_29">BoolSet</a><li>SetCustomMode()
: <a class="el" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">chanrec</a><li>SetCustomModeParam()
: <a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec</a><li>Shrink()
: <a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Extensible</a><li>SocketEngine()
: <a class="el" href="classSocketEngine.html#SocketEngine_28_29">SocketEngine</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>Timeout()
+<li>TakeBan()
+: <a class="el" href="classModeParser.html#TakeBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeHops()
+: <a class="el" href="classModeParser.html#TakeHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeOps()
+: <a class="el" href="classModeParser.html#TakeOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeVoice()
+: <a class="el" href="classModeParser.html#TakeVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>Timeout()
: <a class="el" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
: <a class="el" href="classBoolSet.html#Unset_28int_20number_29">BoolSet</a><li>userrec()
: <a class="el" href="classuserrec.html#userrec_28_29">userrec</a><li>UserToPseudo()
: <a class="el" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<li>Verify()
: <a class="el" href="classConfigReader.html#Verify_28_29">ConfigReader</a><li>Version()
: <a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<li>Wait()
: <a class="el" href="classSocketEngine.html#Wait_28std_3A_3Avector_3C_20int_20_3E_20_26fdlist_29">SocketEngine</a><li>Write()
: <a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindexHL" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindexHL" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
-<li>~chanrec()
+<li>~AES()
+: <a class="el" href="classAES.html#_7EAES_28_29">AES</a><li>~chanrec()
: <a class="el" href="classchanrec.html#_7Echanrec_28_29">chanrec</a><li>~classbase()
-: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~ConfigReader()
+: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~command_t()
+: <a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">command_t</a><li>~ConfigReader()
: <a class="el" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader</a><li>~DNS()
: <a class="el" href="classDNS.html#_7EDNS_28_29">DNS</a><li>~FileReader()
: <a class="el" href="classFileReader.html#_7EFileReader_28_29">FileReader</a><li>~HostItem()
: <a class="el" href="classSocketEngine.html#_7ESocketEngine_28_29">SocketEngine</a><li>~ucrec()
: <a class="el" href="classucrec.html#_7Eucrec_28_29">ucrec</a><li>~userrec()
: <a class="el" href="classuserrec.html#_7Euserrec_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_w">w</a></div>
<p>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>addr
+<li>a
+: <a class="el" href="classAES.html#a_5BMAX_5FBC_5D">AES</a><li>addr
: <a class="el" href="classInspSocket.html#addr">InspSocket</a><li>addrs
: <a class="el" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">ServerConfig</a><li>addy
: <a class="el" href="classInspSocket.html#addy">InspSocket</a><li>AdminEmail
: <a class="el" href="classchanrec.html#bans">chanrec</a><li>binarymodes
: <a class="el" href="classchanrec.html#binarymodes">chanrec</a><li>binip
: <a class="el" href="classDNS.html#binip">DNS</a><li>bits
-: <a class="el" href="classBoolSet.html#bits">BoolSet</a><li>Build
+: <a class="el" href="classBoolSet.html#bits">BoolSet</a><li>BoundPortCount
+: <a class="el" href="classserverstats.html#BoundPortCount">serverstats</a><li>Buffer
+: <a class="el" href="classInspSocket.html#Buffer">InspSocket</a><li>Build
: <a class="el" href="classVersion.html#Build">Version</a><li>bytes_in
: <a class="el" href="classconnection.html#bytes_5Fin">connection</a><li>bytes_out
: <a class="el" href="classconnection.html#bytes_5Fout">connection</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>cache
: <a class="el" href="classConfigReader.html#cache">ConfigReader</a><li>channel
-: <a class="el" href="classInvited.html#channel_5BCHANMAX_5D">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chans
+: <a class="el" href="classInvited.html#channel">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chans
: <a class="el" href="classuserrec.html#chans">userrec</a><li>Classes
: <a class="el" href="classServerConfig.html#Classes">ServerConfig</a><li>client
: <a class="el" href="classInspSocket.html#client">InspSocket</a><li>cmds_in
: <a class="el" href="classconnection.html#cmds_5Fin">connection</a><li>cmds_out
: <a class="el" href="classconnection.html#cmds_5Fout">connection</a><li>command
-: <a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command_t</a><li>config_f
+: <a class="el" href="classcommand__t.html#command">command_t</a><li>config_f
: <a class="el" href="classServerConfig.html#config_5Ff">ServerConfig</a><li>created
: <a class="el" href="classchanrec.html#created">chanrec</a><li>custom_modes
: <a class="el" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">chanrec</a></ul>
: <a class="el" href="classuserrec.html#flood">userrec</a>, <a class="el" href="classConnectClass.html#flood">ConnectClass</a><li>fullname
: <a class="el" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">userrec</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handler_function
-: <a class="el" href="classcommand__t.html#handler_5Ffunction">command_t</a><li>haspassed
+<li>haspassed
: <a class="el" href="classconnection.html#haspassed">connection</a><li>host
: <a class="el" href="classWhoWasUser.html#host_5B_31_36_30_5D">WhoWasUser</a>, <a class="el" href="classConnectClass.html#host_5BMAXBUF_5D">ConnectClass</a>, <a class="el" href="classInspSocket.html#host">InspSocket</a>, <a class="el" href="classconnection.html#host_5B_31_36_30_5D">connection</a><li>hostmask
: <a class="el" href="classELine.html#hostmask_5B_32_30_30_5D">ELine</a>, <a class="el" href="classGLine.html#hostmask_5B_32_30_30_5D">GLine</a>, <a class="el" href="classKLine.html#hostmask_5B_32_30_30_5D">KLine</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>ibuf
-: <a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">InspSocket</a><li>id
+: <a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">InspSocket</a><li>id
: <a class="el" href="classEvent.html#id">Event</a><li>ident
: <a class="el" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">userrec</a><li>idle_lastmsg
: <a class="el" href="classconnection.html#idle_5Flastmsg">connection</a><li>include_stack
: <a class="el" href="classServerConfig.html#include_5Fstack">ServerConfig</a><li>internal_userlist
: <a class="el" href="classchanrec.html#internal_5Fuserlist">chanrec</a><li>invites
-: <a class="el" href="classuserrec.html#invites">userrec</a><li>IP
-: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ip
-: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>ipaddr
+: <a class="el" href="classuserrec.html#invites">userrec</a><li>IOHookModule
+: <a class="el" href="classServerConfig.html#IOHookModule">ServerConfig</a><li>ip
+: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>IP
+: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ipaddr
: <a class="el" href="classZLine.html#ipaddr_5B_34_30_5D">ZLine</a><li>is_global
: <a class="el" href="classQLine.html#is_5Fglobal">QLine</a>, <a class="el" href="classZLine.html#is_5Fglobal">ZLine</a></ul>
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
: <a class="el" href="classServerConfig.html#log_5Ffile">ServerConfig</a><li>LogLevel
: <a class="el" href="classServerConfig.html#LogLevel">ServerConfig</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Major
+<li>m_bKeyInit
+: <a class="el" href="classAES.html#m_5FbKeyInit">AES</a><li>m_blockSize
+: <a class="el" href="classAES.html#m_5FblockSize">AES</a><li>m_chain
+: <a class="el" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_chain0
+: <a class="el" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_iROUNDS
+: <a class="el" href="classAES.html#m_5FiROUNDS">AES</a><li>m_Kd
+: <a class="el" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_Ke
+: <a class="el" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_keylength
+: <a class="el" href="classAES.html#m_5Fkeylength">AES</a><li>Major
: <a class="el" href="classVersion.html#Major">Version</a><li>MaxConn
: <a class="el" href="classServerConfig.html#MaxConn">ServerConfig</a><li>MaxWhoResults
: <a class="el" href="classServerConfig.html#MaxWhoResults">ServerConfig</a><li>min_params
: <a class="el" href="classcommand__t.html#min_5Fparams">command_t</a><li>Minor
: <a class="el" href="classVersion.html#Minor">Version</a><li>mode
: <a class="el" href="classModeParameter.html#mode">ModeParameter</a><li>modechar
-: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>MODERR
+: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>ModeGrok
+: <a class="el" href="classInspIRCd.html#ModeGrok">InspIRCd</a><li>MODERR
: <a class="el" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">InspIRCd</a><li>modes
: <a class="el" href="classuserrec.html#modes_5B_35_34_5D">userrec</a><li>ModPath
: <a class="el" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ServerConfig</a><li>module_names
-: <a class="el" href="classServerConfig.html#module_5Fnames">ServerConfig</a><li>motd
-: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>MOTD
-: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>MyExecutable
+: <a class="el" href="classServerConfig.html#module_5Fnames">ServerConfig</a><li>MOTD
+: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>motd
+: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>MyExecutable
: <a class="el" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">ServerConfig</a><li>myfd
: <a class="el" href="classDNS.html#myfd">DNS</a></ul>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>n_matches
-: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>name
-: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>Name
-: <a class="el" href="classAdmin.html#Name">Admin</a><li>needsoper
+: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>Name
+: <a class="el" href="classAdmin.html#Name">Admin</a><li>name
+: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>needsoper
: <a class="el" href="classExtMode.html#needsoper">ExtMode</a><li>NetBufferSize
: <a class="el" href="classServerConfig.html#NetBufferSize">ServerConfig</a><li>Network
: <a class="el" href="classServerConfig.html#Network_5BMAXBUF_5D">ServerConfig</a><li>next
-: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>nick
-: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>Nick
-: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nofork
+: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>Nick
+: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nick
+: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>nofork
: <a class="el" href="classServerConfig.html#nofork">ServerConfig</a><li>nping
: <a class="el" href="classconnection.html#nping">connection</a></ul>
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
<li>parameter
: <a class="el" href="classModeParameter.html#parameter_5BMAXBUF_5D">ModeParameter</a><li>params_when_off
: <a class="el" href="classExtMode.html#params_5Fwhen_5Foff">ExtMode</a><li>params_when_on
-: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>pass
+: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>Parser
+: <a class="el" href="classInspIRCd.html#Parser">InspIRCd</a><li>pass
: <a class="el" href="classConnectClass.html#pass_5BMAXBUF_5D">ConnectClass</a><li>password
: <a class="el" href="classuserrec.html#password_5BMAXBUF_5D">userrec</a><li>PID
: <a class="el" href="classServerConfig.html#PID_5B_31_30_32_34_5D">ServerConfig</a><li>pingmax
: <a class="el" href="classuserrec.html#reset_5Fdue">userrec</a><li>restartpass
: <a class="el" href="classServerConfig.html#restartpass_5BMAXBUF_5D">ServerConfig</a><li>result
: <a class="el" href="classDNS.html#result">DNS</a><li>Revision
-: <a class="el" href="classVersion.html#Revision">Version</a><li>rules
-: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a><li>RULES
-: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a></ul>
+: <a class="el" href="classVersion.html#Revision">Version</a><li>RULES
+: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a><li>rules
+: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>sendq
+<li>SE
+: <a class="el" href="classInspIRCd.html#SE">InspIRCd</a><li>sendq
: <a class="el" href="classuserrec.html#sendq">userrec</a><li>sendqmax
: <a class="el" href="classuserrec.html#sendqmax">userrec</a>, <a class="el" href="classConnectClass.html#sendqmax">ConnectClass</a><li>server
: <a class="el" href="classWhoWasUser.html#server_5B_32_35_36_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#server">userrec</a>, <a class="el" href="classInspSocket.html#server">InspSocket</a><li>ServerDesc
: <a class="el" href="classHostItem.html#set_5Fby_5BNICKMAX_5D">HostItem</a><li>set_time
: <a class="el" href="classXLine.html#set_5Ftime">XLine</a>, <a class="el" href="classHostItem.html#set_5Ftime">HostItem</a><li>setby
: <a class="el" href="classchanrec.html#setby_5BNICKMAX_5D">chanrec</a><li>signon
-: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>SoftLimit
+: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>sm_alog
+: <a class="el" href="classAES.html#sm_5Falog_5B_32_35_36_5D">AES</a><li>sm_chain0
+: <a class="el" href="classAES.html#sm_5Fchain_30">AES</a><li>sm_log
+: <a class="el" href="classAES.html#sm_5Flog_5B_32_35_36_5D">AES</a><li>sm_rcon
+: <a class="el" href="classAES.html#sm_5Frcon_5B_33_30_5D">AES</a><li>sm_S
+: <a class="el" href="classAES.html#sm_5FS_5B_32_35_36_5D">AES</a><li>sm_shifts
+: <a class="el" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">AES</a><li>sm_Si
+: <a class="el" href="classAES.html#sm_5FSi_5B_32_35_36_5D">AES</a><li>sm_T1
+: <a class="el" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">AES</a><li>sm_T2
+: <a class="el" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">AES</a><li>sm_T3
+: <a class="el" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">AES</a><li>sm_T4
+: <a class="el" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">AES</a><li>sm_T5
+: <a class="el" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">AES</a><li>sm_T6
+: <a class="el" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">AES</a><li>sm_T7
+: <a class="el" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">AES</a><li>sm_T8
+: <a class="el" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">AES</a><li>sm_U1
+: <a class="el" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">AES</a><li>sm_U2
+: <a class="el" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">AES</a><li>sm_U3
+: <a class="el" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">AES</a><li>sm_U4
+: <a class="el" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">AES</a><li>SoftLimit
: <a class="el" href="classServerConfig.html#SoftLimit">ServerConfig</a><li>source
-: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">command_t</a><li>startup_time
+: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source">command_t</a><li>startup_time
: <a class="el" href="classInspIRCd.html#startup_5Ftime">InspIRCd</a><li>state
-: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>statsAccept
+: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>stats
+: <a class="el" href="classInspIRCd.html#stats">InspIRCd</a><li>statsAccept
: <a class="el" href="classserverstats.html#statsAccept">serverstats</a><li>statsCollisions
: <a class="el" href="classserverstats.html#statsCollisions">serverstats</a><li>statsConnects
: <a class="el" href="classserverstats.html#statsConnects">serverstats</a><li>statsDns
: <a class="el" href="classserverstats.html#statsUnknown">serverstats</a></ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>t
-: <a class="el" href="classDNS.html#t">DNS</a><li>threshold
+: <a class="el" href="classDNS.html#t">DNS</a>, <a class="el" href="classAES.html#t_5BMAX_5FBC_5D">AES</a><li>threshold
: <a class="el" href="classuserrec.html#threshold">userrec</a>, <a class="el" href="classConnectClass.html#threshold">ConnectClass</a><li>timeout
: <a class="el" href="classuserrec.html#timeout">userrec</a>, <a class="el" href="classInspSocket.html#timeout">InspSocket</a><li>timeout_end
-: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>topic
+: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>tk
+: <a class="el" href="classAES.html#tk_5BMAX_5FKC_5D">AES</a><li>topic
: <a class="el" href="classchanrec.html#topic_5BMAXBUF_5D">chanrec</a><li>topicset
: <a class="el" href="classchanrec.html#topicset">chanrec</a><li>total_bytes
: <a class="el" href="classcommand__t.html#total_5Fbytes">command_t</a><li>ts
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>WriteError
: <a class="el" href="classuserrec.html#WriteError">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="modules_8h.html#AC_5FVOICE">modules.h</a><li>ACR_ALLOW
: <a class="el" href="modules_8h.html#ACR_5FALLOW">modules.h</a><li>ACR_DEFAULT
: <a class="el" href="modules_8h.html#ACR_5FDEFAULT">modules.h</a><li>ACR_DENY
-: <a class="el" href="modules_8h.html#ACR_5FDENY">modules.h</a><li>add_ban()
-: <a class="el" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>add_channel()
+: <a class="el" href="modules_8h.html#ACR_5FDENY">modules.h</a><li>add_channel()
: <a class="el" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.h</a>, <a class="el" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.cpp</a><li>add_eline()
: <a class="el" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_gline()
: <a class="el" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_kline()
: <a class="el" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_qline()
: <a class="el" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">xline.h</a><li>add_zline()
-: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddOper()
-: <a class="el" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">inspircd.h</a><li>address_cache
+: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddClient()
+: <a class="el" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.h</a>, <a class="el" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.cpp</a><li>AddOper()
+: <a class="el" href="users_8h.html#AddOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">users.cpp</a><li>address_cache
: <a class="el" href="typedefs_8h.html#address_5Fcache">typedefs.h</a><li>AddServerName()
: <a class="el" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">inspircd.h</a><li>AddWhoWas()
-: <a class="el" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">inspircd.h</a><li>allowed_umode()
-: <a class="el" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">mode.h</a><li>APPLY_ALL
+: <a class="el" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">users.h</a>, <a class="el" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">users.cpp</a><li>all_opers
+: <a class="el" href="users_8cpp.html#all_5Fopers">users.cpp</a><li>APPLY_ALL
: <a class="el" href="xline_8h.html#APPLY_5FALL">xline.h</a><li>APPLY_GLINES
: <a class="el" href="xline_8h.html#APPLY_5FGLINES">xline.h</a><li>APPLY_KLINES
: <a class="el" href="xline_8h.html#APPLY_5FKLINES">xline.h</a><li>apply_lines()
: <a class="el" href="xline_8h.html#apply_5Flines_28const_20int_20What_29">xline.h</a><li>APPLY_QLINES
: <a class="el" href="xline_8h.html#APPLY_5FQLINES">xline.h</a><li>APPLY_ZLINES
: <a class="el" href="xline_8h.html#APPLY_5FZLINES">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="channels_8h.html#BanList">channels.h</a><li>BindPorts()
: <a class="el" href="inspircd__io_8h.html#BindPorts_28_29">inspircd_io.h</a><li>BindSocket()
: <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">inspircd_io.h</a><li>Blocking()
-: <a class="el" href="message_8h.html#Blocking_28int_20s_29">message.h</a><li>boundPortCount
-: <a class="el" href="socket_8cpp.html#boundPortCount">socket.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="message_8h.html#Blocking_28int_20s_29">message.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>c_count()
-: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>call_handler()
-: <a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>CC_ALLOW
+: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>CC_ALLOW
: <a class="el" href="users_8h.html#CC_5FALLOW">users.h</a><li>CC_DENY
: <a class="el" href="users_8h.html#CC_5FDENY">users.h</a><li>chan_hash
: <a class="el" href="typedefs_8h.html#chan_5Fhash">typedefs.h</a><li>ChanExceptSender()
: <a class="el" href="message_8h.html#chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29">message.h</a><li>chop()
: <a class="el" href="message_8h.html#chop_28char_20_2Astr_29">message.h</a><li>ClassVector
: <a class="el" href="users_8h.html#ClassVector">users.h</a><li>CleanAndResolve()
-: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>clientlist
-: <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>CM_INVITEONLY
+: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>CleanFilename()
+: <a class="el" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">commands.h</a><li>clientlist
+: <a class="el" href="users_8cpp.html#clientlist">users.cpp</a>, <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>CM_INVITEONLY
: <a class="el" href="channels_8h.html#CM_5FINVITEONLY">channels.h</a><li>CM_MODERATED
: <a class="el" href="channels_8h.html#CM_5FMODERATED">channels.h</a><li>CM_NOEXTERNAL
: <a class="el" href="channels_8h.html#CM_5FNOEXTERNAL">channels.h</a><li>CM_PRIVATE
: <a class="el" href="channels_8h.html#CM_5FTOPICLOCK">channels.h</a><li>cmdlist
: <a class="el" href="modules_8cpp.html#cmdlist">modules.cpp</a><li>cmode()
: <a class="el" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a>, <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">globals.h</a><li>command_table
-: <a class="el" href="typedefs_8h.html#command_5Ftable">typedefs.h</a><li>common_channels()
+: <a class="el" href="ctables_8h.html#command_5Ftable">ctables.h</a><li>common_channels()
: <a class="el" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">message.h</a>, <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">globals.h</a><li>CONF_FILE_NOT_FOUND
: <a class="el" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">modules.h</a><li>CONF_NOT_A_NUMBER
: <a class="el" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">modules.h</a><li>CONF_NOT_UNSIGNED
: <a class="el" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">modules.h</a><li>CONF_VALUE_NOT_FOUND
: <a class="el" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">modules.h</a><li>Config
: <a class="el" href="users_8cpp.html#Config">users.cpp</a>, <a class="el" href="modules_8cpp.html#Config">modules.cpp</a>, <a class="el" href="channels_8cpp.html#Config">channels.cpp</a><li>ConnectUser()
-: <a class="el" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">inspircd.h</a><li>createcommand()
-: <a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">modules.h</a><li>cstatus()
+: <a class="el" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">users.cpp</a><li>ConvToStr()
+: <a class="el" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">users.h</a>, <a class="el" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">users.cpp</a><li>cstatus()
: <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a><li>custom_mode_params
: <a class="el" href="channels_8cpp.html#custom_5Fmode_5Fparams">channels.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">xline.h</a><li>del_qline()
: <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">xline.h</a><li>del_zline()
: <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>DeleteOper()
-: <a class="el" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">inspircd.h</a><li>dns_task()
-: <a class="el" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">inspircd.h</a><li>do_whois()
+: <a class="el" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">users.cpp</a><li>dns_task()
+: <a class="el" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns.h</a><li>do_whois()
: <a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">commands.h</a><li>DoAddExtendedMode()
: <a class="el" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">modules.cpp</a><li>DoBackgroundUserStuff()
: <a class="el" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">userprocess.h</a><li>duration()
: <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">commands.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="xline_8h.html#expire_5Flines_28_29">xline.h</a><li>ExtModeList
: <a class="el" href="typedefs_8h.html#ExtModeList">typedefs.h</a><li>ExtModeListIter
: <a class="el" href="typedefs_8h.html#ExtModeListIter">typedefs.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>factory
-: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FALSE
+: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#factory">users.cpp</a>, <a class="el" href="modules_8cpp.html#factory">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FALSE
: <a class="el" href="inspircd_8h.html#FALSE">inspircd.h</a><li>FD_MAGIC_NUMBER
: <a class="el" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">modules.h</a><li>fd_ref_table
-: <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a><li>file_cache
+: <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">users.cpp</a>, <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a><li>file_cache
: <a class="el" href="typedefs_8h.html#file_5Fcache">typedefs.h</a>, <a class="el" href="modules_8h.html#file_5Fcache">modules.h</a>, <a class="el" href="globals_8h.html#file_5Fcache">globals.h</a><li>FileExists()
: <a class="el" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">inspircd_io.h</a><li>Find()
: <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">globals.h</a><li>FindChan()
: <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">globals.h</a><li>FindServerNamePtr()
: <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">inspircd.h</a><li>force_nickchange()
-: <a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">inspircd.h</a><li>ForceChan()
+: <a class="el" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.h</a>, <a class="el" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.cpp</a><li>ForceChan()
: <a class="el" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">channels.cpp</a><li>FOREACH_MOD
: <a class="el" href="modules_8h.html#FOREACH_5FMOD">modules.h</a><li>FOREACH_RESULT
-: <a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">modules.h</a><li>FullConnectUser()
-: <a class="el" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">modules.h</a><li>from64tobits()
+: <a class="el" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">aes.h</a><li>FullConnectUser()
+: <a class="el" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">users.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="globals_8h.html#getadminname_28_29">globals.h</a><li>getadminnick()
: <a class="el" href="globals_8h.html#getadminnick_28_29">globals.h</a><li>getnetworkname()
: <a class="el" href="globals_8h.html#getnetworkname_28_29">globals.h</a><li>getservername()
-: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>give_hops()
-: <a class="el" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_ops()
-: <a class="el" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_voice()
-: <a class="el" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>gline_set_creation_time()
+: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>gline_set_creation_time()
: <a class="el" href="xline_8h.html#gline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handle_admin()
-: <a class="el" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_away()
-: <a class="el" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_commands()
-: <a class="el" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_connect()
-: <a class="el" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_die()
-: <a class="el" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_eline()
-: <a class="el" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_gline()
-: <a class="el" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_info()
-: <a class="el" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_invite()
-: <a class="el" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ison()
-: <a class="el" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_join()
-: <a class="el" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kick()
-: <a class="el" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kill()
-: <a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kline()
-: <a class="el" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_links()
-: <a class="el" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_list()
-: <a class="el" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_loadmodule()
-: <a class="el" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_lusers()
-: <a class="el" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_map()
-: <a class="el" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_mode()
-: <a class="el" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>handle_modules()
-: <a class="el" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_motd()
-: <a class="el" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_names()
-: <a class="el" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_nick()
-: <a class="el" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_notice()
-: <a class="el" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_oper()
-: <a class="el" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_part()
-: <a class="el" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pass()
-: <a class="el" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ping()
-: <a class="el" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pong()
-: <a class="el" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_privmsg()
-: <a class="el" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_qline()
-: <a class="el" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_quit()
-: <a class="el" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rehash()
-: <a class="el" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_restart()
-: <a class="el" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rules()
-: <a class="el" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_server()
-: <a class="el" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_squit()
-: <a class="el" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_stats()
-: <a class="el" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_summon()
-: <a class="el" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_time()
-: <a class="el" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_topic()
-: <a class="el" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_trace()
-: <a class="el" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_unloadmodule()
-: <a class="el" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_user()
-: <a class="el" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_userhost()
-: <a class="el" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_users()
-: <a class="el" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_version()
-: <a class="el" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>handle_wallops()
-: <a class="el" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_who()
-: <a class="el" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whois()
-: <a class="el" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whowas()
-: <a class="el" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_zline()
-: <a class="el" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handlerfunc
-: <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">inspircd.h</a><li>has_channel()
+<li>has_channel()
: <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">message.h</a><li>hasumode()
-: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a><li>host_matches_everyone()
+: <a class="el" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">commands.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="socket_8h.html#InspSocketError">socket.h</a><li>InspSocketState
: <a class="el" href="socket_8h.html#InspSocketState">socket.h</a><li>InvitedList
: <a class="el" href="users_8h.html#InvitedList">users.h</a><li>InviteList
-: <a class="el" href="channels_8h.html#InviteList">channels.h</a><li>ircd_module
+: <a class="el" href="channels_8h.html#InviteList">channels.h</a><li>ip_matches_everyone()
+: <a class="el" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">commands.h</a><li>ircd_module
: <a class="el" href="modules_8h.html#ircd_5Fmodule">modules.h</a><li>IS_LOCAL
-: <a class="el" href="inspircd_8h.html#IS_5FLOCAL_28x_29">inspircd.h</a><li>IS_MODULE_CREATED
-: <a class="el" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">inspircd.h</a><li>IS_REMOTE
-: <a class="el" href="inspircd_8h.html#IS_5FREMOTE_28x_29">inspircd.h</a><li>is_uline()
-: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>is_valid_cmd()
-: <a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>isident()
+: <a class="el" href="modules_8h.html#IS_5FLOCAL_28x_29">modules.h</a><li>IS_MODULE_CREATED
+: <a class="el" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">modules.h</a><li>IS_REMOTE
+: <a class="el" href="modules_8h.html#IS_5FREMOTE_28x_29">modules.h</a><li>is_uline()
+: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>isident()
: <a class="el" href="message_8h.html#isident_28const_20char_20_2An_29">message.h</a><li>isnick()
: <a class="el" href="message_8h.html#isnick_28const_20char_20_2An_29">message.h</a>, <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">globals.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
<li>kick_channel()
: <a class="el" href="channels_8h.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.h</a>, <a class="el" href="channels_8cpp.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.cpp</a><li>kill_link()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a><li>kill_link_silent()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a><li>kill_link_silent()
+: <a class="el" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LoadAllModules()
-: <a class="el" href="userprocess_8h.html#LoadAllModules_28_29">userprocess.h</a><li>log()
-: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>loop_call()
-: <a class="el" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">userprocess.h</a><li>local_users
+: <a class="el" href="users_8cpp.html#local_5Fusers">users.cpp</a><li>log()
+: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">xline.h</a><li>matches_zline()
: <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>MAXCOMMAND
: <a class="el" href="inspircd_8h.html#MAXCOMMAND">inspircd.h</a><li>MAXSOCKS
-: <a class="el" href="inspircd_8h.html#MAXSOCKS">inspircd.h</a><li>merge_mode()
-: <a class="el" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">mode.h</a><li>merge_mode2()
-: <a class="el" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>MODCOUNT
-: <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>ModeDefiend()
+: <a class="el" href="inspircd_8h.html#MAXSOCKS">inspircd.h</a><li>MODCOUNT
+: <a class="el" href="users_8cpp.html#MODCOUNT">users.cpp</a>, <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>ModeDefiend()
: <a class="el" href="globals_8h.html#ModeDefiend_28char_20c_2C_20int_20i_29">globals.h</a><li>ModeDefined()
: <a class="el" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOff()
: <a class="el" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOn()
: <a class="el" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeIsListMode()
: <a class="el" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeMakeList()
: <a class="el" href="modules_8h.html#ModeMakeList_28char_20modechar_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">modules.cpp</a><li>module_sockets
-: <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
-: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a><li>MT_CHANNEL
+: <a class="el" href="users_8cpp.html#module_5Fsockets">users.cpp</a>, <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
+: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#modules">users.cpp</a>, <a class="el" href="modules_8cpp.html#modules">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a><li>MT_CHANNEL
: <a class="el" href="modules_8h.html#MT_5FCHANNEL">modules.h</a><li>MT_CLIENT
: <a class="el" href="modules_8h.html#MT_5FCLIENT">modules.h</a><li>MT_SERVER
: <a class="el" href="modules_8h.html#MT_5FSERVER">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NonBlocking()
+<li>nick_matches_everyone()
+: <a class="el" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">commands.h</a><li>NonBlocking()
: <a class="el" href="message_8h.html#NonBlocking_28int_20s_29">message.h</a><li>NONE
: <a class="el" href="modules_8h.html#NONE">modules.h</a>, <a class="el" href="inspircd__io_8h.html#NONE">inspircd_io.h</a><li>nspace
: <a class="el" href="hashcomp_8h.html#nspace">hashcomp.h</a>, <a class="el" href="channels_8cpp.html#nspace">channels.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
<li>OpenLog()
-: <a class="el" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">userprocess.h</a><li>openSockfd
-: <a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">socket.cpp</a><li>OpenTCPSocket()
-: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">userprocess.h</a><li>OpenTCPSocket()
+: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a><li>operstrcmp()
+: <a class="el" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">commands.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>process_buffer()
-: <a class="el" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">inspircd.h</a><li>process_modes()
-: <a class="el" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">mode.h</a><li>process_module_umode()
-: <a class="el" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">mode.h</a><li>ProcessUser()
+<li>ProcessUser()
: <a class="el" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">userprocess.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<li>qline_make_global()
: <a class="el" href="xline_8h.html#qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29">xline.h</a><li>qline_set_creation_time()
: <a class="el" href="xline_8h.html#qline_5Fset_5Fcreation_5Ftime_28char_20_2Anick_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="xline_8h.html#read_5Fxline_5Fdefaults_28_29">xline.h</a><li>readfile()
: <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">globals.h</a><li>ref
: <a class="el" href="socketengine_8cpp.html#ref_5B_36_35_35_33_35_5D">socketengine.cpp</a><li>ReHashNick()
-: <a class="el" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.h</a>, <a class="el" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SE
-: <a class="el" href="socket_8cpp.html#SE">socket.cpp</a>, <a class="el" href="modules_8cpp.html#SE">modules.cpp</a><li>send_network_quit()
-: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>server_mode()
-: <a class="el" href="modules_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">modules.h</a>, <a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>ServerInstance
-: <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>servernamelist
+<li>send_network_quit()
+: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>ServerInstance
+: <a class="el" href="users_8cpp.html#ServerInstance">users.cpp</a>, <a class="el" href="socket_8cpp.html#ServerInstance">socket.cpp</a>, <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>servernamelist
: <a class="el" href="typedefs_8h.html#servernamelist">typedefs.h</a><li>socket_ref
-: <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a><li>SPARSE
+: <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">users.cpp</a>, <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a><li>SPARSE
: <a class="el" href="modules_8h.html#SPARSE">modules.h</a>, <a class="el" href="inspircd__io_8h.html#SPARSE">inspircd_io.h</a><li>Start()
: <a class="el" href="inspircd__io_8h.html#Start_28void_29">inspircd_io.h</a><li>stats_e()
: <a class="el" href="xline_8h.html#stats_5Fe_28userrec_20_2Auser_29">xline.h</a><li>stats_g()
: <a class="el" href="users_8h.html#STATUS_5FVOICE">users.h</a><li>string
: <a class="el" href="namespaceirc.html#string">hashcomp.h</a><li>string_list
: <a class="el" href="modules_8h.html#string_5Flist">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>take_ban()
-: <a class="el" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_hops()
-: <a class="el" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_ops()
-: <a class="el" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_voice()
-: <a class="el" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>TidyBan()
+<li>TidyBan()
: <a class="el" href="message_8h.html#TidyBan_28char_20_2Aban_29">message.h</a><li>tidystring()
: <a class="el" href="message_8h.html#tidystring_28char_20_2Astr_29">message.h</a><li>TIME
-: <a class="el" href="users_8cpp.html#TIME">users.cpp</a>, <a class="el" href="socket_8cpp.html#TIME">socket.cpp</a>, <a class="el" href="modules_8cpp.html#TIME">modules.cpp</a>, <a class="el" href="channels_8cpp.html#TIME">channels.cpp</a><li>TRUE
+: <a class="el" href="users_8cpp.html#TIME">users.cpp</a>, <a class="el" href="socket_8cpp.html#TIME">socket.cpp</a>, <a class="el" href="modules_8cpp.html#TIME">modules.cpp</a>, <a class="el" href="channels_8cpp.html#TIME">channels.cpp</a><li>to64frombits()
+: <a class="el" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">aes.h</a><li>TRUE
: <a class="el" href="inspircd_8h.html#TRUE">inspircd.h</a><li>TYPE_CHANNEL
-: <a class="el" href="inspircd_8h.html#TYPE_5FCHANNEL">inspircd.h</a><li>TYPE_SERVER
-: <a class="el" href="inspircd_8h.html#TYPE_5FSERVER">inspircd.h</a><li>TYPE_USER
-: <a class="el" href="inspircd_8h.html#TYPE_5FUSER">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="modules_8h.html#TYPE_5FCHANNEL">modules.h</a><li>TYPE_SERVER
+: <a class="el" href="modules_8h.html#TYPE_5FSERVER">modules.h</a><li>TYPE_USER
+: <a class="el" href="modules_8h.html#TYPE_5FUSER">modules.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="channels_8h.html#UCMODE_5FPROTECT">channels.h</a><li>UCMODE_VOICE
: <a class="el" href="channels_8h.html#UCMODE_5FVOICE">channels.h</a><li>user_hash
: <a class="el" href="typedefs_8h.html#user_5Fhash">typedefs.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="modules_8h.html#VF_5FSTATIC">modules.h</a><li>VF_VENDOR
: <a class="el" href="modules_8h.html#VF_5FVENDOR">modules.h</a><li>VoidPointer
: <a class="el" href="base_8h.html#VoidPointer">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>whowas_hash
+<li>whowas
+: <a class="el" href="users_8cpp.html#whowas">users.cpp</a><li>whowas_hash
: <a class="el" href="typedefs_8h.html#whowas_5Fhash">typedefs.h</a><li>WHOWAS_MAX
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a><li>WM_AND
-: <a class="el" href="inspircd_8h.html#WM_5FAND">inspircd.h</a><li>WM_OR
-: <a class="el" href="inspircd_8h.html#WM_5FOR">inspircd.h</a><li>Write()
+: <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
+: <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a><li>WM_AND
+: <a class="el" href="modules_8h.html#WM_5FAND">modules.h</a><li>WM_OR
+: <a class="el" href="modules_8h.html#WM_5FOR">modules.h</a><li>Write()
: <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteChannel()
: <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteCommon()
: <a class="el" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteCommonExcept()
: <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteTo()
: <a class="el" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">globals.h</a><li>WriteWallOps()
: <a class="el" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="socketengine_8h.html#X_5FESTAB_5FMODULE">socketengine.h</a><li>X_LISTEN
: <a class="el" href="socketengine_8h.html#X_5FLISTEN">socketengine.h</a><li>X_READBIT
: <a class="el" href="socketengine_8h.html#X_5FREADBIT">socketengine.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<li>zline_make_global()
: <a class="el" href="xline_8h.html#zline_5Fmake_5Fglobal_28const_20char_20_2Aipaddr_29">xline.h</a><li>zline_set_creation_time()
: <a class="el" href="xline_8h.html#zline_5Fset_5Fcreation_5Ftime_28char_20_2Aip_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00053"></a>00053 <span class="keywordtype">int</span> <a class="code" href="globals_8h.html#ModeDefiend_28char_20c_2C_20int_20i_29">ModeDefiend</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Include dependency graph for globals.h:<p><center><img src="globals_8h__incl.gif" border="0" usemap="#globals.h_map" alt=""></center>
<map name="globals.h_map">
-<area href="users_8h-source.html" shape="rect" coords="138,235,202,261" alt="">
+<area href="users_8h-source.html" shape="rect" coords="138,260,202,287" alt="">
<area href="channels_8h-source.html" shape="rect" coords="262,159,347,185" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="255,361,354,388" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="255,311,354,337" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="258,361,351,388" alt="">
</map>
<p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00460">Server::SendChannel()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00459">Server::SendChannel()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29"></a><!-- doxytag: member="globals.h::cmode" ref="cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29" args="(userrec *user, chanrec *chan)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00524">Server::ChanMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00523">Server::ChanMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29"></a><!-- doxytag: member="globals.h::common_channels" ref="common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29" args="(userrec *u, userrec *u2)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00472">Server::CommonChannels()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00471">Server::CommonChannels()</a>. </td>
</tr>
</table>
<a class="anchor" name="Find_28std_3A_3Astring_20nick_29"></a><!-- doxytag: member="globals.h::Find" ref="Find_28std_3A_3Astring_20nick_29" args="(std::string nick)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00509">Server::FindNick()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00508">Server::FindNick()</a>. </td>
</tr>
</table>
<a class="anchor" name="FindChan_28const_20char_20_2Achan_29"></a><!-- doxytag: member="globals.h::FindChan" ref="FindChan_28const_20char_20_2Achan_29" args="(const char *chan)" --><p>
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00519">Server::FindChannel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00518">Server::FindChannel()</a>. </td>
</tr>
</table>
<a class="anchor" name="getadminemail_28_29"></a><!-- doxytag: member="globals.h::getadminemail" ref="getadminemail_28_29" args="()" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00504">Server::IsNick()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00503">Server::IsNick()</a>. </td>
</tr>
</table>
<a class="anchor" name="log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::log" ref="log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int level, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="channels_8cpp-source.html#l00167">chanrec::AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00411">Server::Log()</a>, <a class="el" href="socket_8cpp-source.html#l00158">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00086">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00248">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00292">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8cpp-source.html#l00330">AddOper()</a>, <a class="el" href="channels_8cpp-source.html#l00166">chanrec::AddUser()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="users_8cpp-source.html#l00336">DeleteOper()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00410">Server::Log()</a>, <a class="el" href="socket_8cpp-source.html#l00155">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00743">ReHashNick()</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00085">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00247">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00317">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
</tr>
</table>
<a class="anchor" name="ModeDefiend_28char_20c_2C_20int_20i_29"></a><!-- doxytag: member="globals.h::ModeDefiend" ref="ModeDefiend_28char_20c_2C_20int_20i_29" args="(char c, int i)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00884">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00895">FileReader::LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00883">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00894">FileReader::LoadFile()</a>. </td>
</tr>
</table>
<a class="anchor" name="Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::Write" ref="Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int sock, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00426">Server::Send()</a>, <a class="el" href="modules_8cpp-source.html#l00441">Server::SendTo()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00425">Server::Send()</a>, <a class="el" href="modules_8cpp-source.html#l00440">Server::SendTo()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteChannel" ref="WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(chanrec *Ptr, userrec *user, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00460">Server::SendChannel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00459">Server::SendChannel()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteCommon" ref="WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(userrec *u, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00477">Server::SendCommon()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00476">Server::SendCommon()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteCommonExcept" ref="WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(userrec *u, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00477">Server::SendCommon()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="modules_8cpp-source.html#l00476">Server::SendCommon()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteFrom" ref="WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int sock, userrec *user, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00436">Server::SendFrom()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00435">Server::SendFrom()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteOpers" ref="WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29" args="(char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">userrec::AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00254">userrec::AddWriteBuf()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="modules_8cpp-source.html#l00318">Server::RehashServer()</a>, and <a class="el" href="modules_8cpp-source.html#l00346">Server::SendOpers()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">userrec::AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00275">userrec::AddWriteBuf()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="modules_8cpp-source.html#l00317">Server::RehashServer()</a>, and <a class="el" href="modules_8cpp-source.html#l00345">Server::SendOpers()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteServ" ref="WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int sock, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00431">Server::SendServ()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00430">Server::SendServ()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteTo" ref="WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29" args="(userrec *source, userrec *dest, char *data,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00441">Server::SendTo()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00440">Server::SendTo()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteWallOps" ref="WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(userrec *source, bool local_only, char *text,...)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00489">Server::SendWallops()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00488">Server::SendWallops()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
-9d6f4bf521bab022edbf6a21bf5aa7ea
\ No newline at end of file
+1ef247aba7c18e92a4fa5c62345d5980
\ No newline at end of file
base referer
-rect $users_8h-source.html 138,235 202,261
+rect $users_8h-source.html 138,260 202,287
rect $channels_8h-source.html 262,159 347,185
-rect $connection_8h-source.html 255,361 354,388
+rect $connection_8h-source.html 255,311 354,337
+rect $hashcomp_8h-source.html 258,361 351,388
-a3b3469472caf7df1d6ac1729fa3eb57
\ No newline at end of file
+578c3aa06350d981bcd02180a126f6e8
\ No newline at end of file
: <a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">modules.h</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>IS_LOCAL
-: <a class="el" href="inspircd_8h.html#IS_5FLOCAL_28x_29">inspircd.h</a><li>IS_MODULE_CREATED
-: <a class="el" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">inspircd.h</a><li>IS_REMOTE
-: <a class="el" href="inspircd_8h.html#IS_5FREMOTE_28x_29">inspircd.h</a></ul>
+: <a class="el" href="modules_8h.html#IS_5FLOCAL_28x_29">modules.h</a><li>IS_MODULE_CREATED
+: <a class="el" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">modules.h</a><li>IS_REMOTE
+: <a class="el" href="modules_8h.html#IS_5FREMOTE_28x_29">modules.h</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
<li>MAXCOMMAND
: <a class="el" href="inspircd_8h.html#MAXCOMMAND">inspircd.h</a><li>MAXSOCKS
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>TRUE
: <a class="el" href="inspircd_8h.html#TRUE">inspircd.h</a><li>TYPE_CHANNEL
-: <a class="el" href="inspircd_8h.html#TYPE_5FCHANNEL">inspircd.h</a><li>TYPE_SERVER
-: <a class="el" href="inspircd_8h.html#TYPE_5FSERVER">inspircd.h</a><li>TYPE_USER
-: <a class="el" href="inspircd_8h.html#TYPE_5FUSER">inspircd.h</a></ul>
+: <a class="el" href="modules_8h.html#TYPE_5FCHANNEL">modules.h</a><li>TYPE_SERVER
+: <a class="el" href="modules_8h.html#TYPE_5FSERVER">modules.h</a><li>TYPE_USER
+: <a class="el" href="modules_8h.html#TYPE_5FUSER">modules.h</a></ul>
<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
<li>UCMODE_FOUNDER
: <a class="el" href="channels_8h.html#UCMODE_5FFOUNDER">channels.h</a><li>UCMODE_HOP
: <a class="el" href="modules_8h.html#VF_5FVENDOR">modules.h</a></ul>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>WM_AND
-: <a class="el" href="inspircd_8h.html#WM_5FAND">inspircd.h</a><li>WM_OR
-: <a class="el" href="inspircd_8h.html#WM_5FOR">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+: <a class="el" href="modules_8h.html#WM_5FAND">modules.h</a><li>WM_OR
+: <a class="el" href="modules_8h.html#WM_5FOR">modules.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<li>InspSocketError
: <a class="el" href="socket_8h.html#InspSocketError">socket.h</a><li>InspSocketState
: <a class="el" href="socket_8h.html#InspSocketState">socket.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">socket.h</a><li>I_ERROR
: <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">socket.h</a><li>I_LISTENING
: <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">socket.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>add_ban()
-: <a class="el" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>add_channel()
+<li>add_channel()
: <a class="el" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.h</a>, <a class="el" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.cpp</a><li>add_eline()
: <a class="el" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_gline()
: <a class="el" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_kline()
: <a class="el" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_qline()
: <a class="el" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">xline.h</a><li>add_zline()
-: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddOper()
-: <a class="el" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">inspircd.h</a><li>AddServerName()
+: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddClient()
+: <a class="el" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.h</a>, <a class="el" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.cpp</a><li>AddOper()
+: <a class="el" href="users_8h.html#AddOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">users.cpp</a><li>AddServerName()
: <a class="el" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">inspircd.h</a><li>AddWhoWas()
-: <a class="el" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">inspircd.h</a><li>allowed_umode()
-: <a class="el" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">mode.h</a><li>apply_lines()
+: <a class="el" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">users.h</a>, <a class="el" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">users.cpp</a><li>apply_lines()
: <a class="el" href="xline_8h.html#apply_5Flines_28const_20int_20What_29">xline.h</a></ul>
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
<li>BindPorts()
: <a class="el" href="message_8h.html#Blocking_28int_20s_29">message.h</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>c_count()
-: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>call_handler()
-: <a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>ChanExceptSender()
+: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>ChanExceptSender()
: <a class="el" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>ChangeDisplayedHost()
: <a class="el" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">message.h</a><li>ChangeName()
: <a class="el" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">message.h</a><li>CheckDie()
: <a class="el" href="userprocess_8h.html#CheckRoot_28_29">userprocess.h</a><li>chlist()
: <a class="el" href="message_8h.html#chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29">message.h</a><li>chop()
: <a class="el" href="message_8h.html#chop_28char_20_2Astr_29">message.h</a><li>CleanAndResolve()
-: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>cmode()
+: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>CleanFilename()
+: <a class="el" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">commands.h</a><li>cmode()
: <a class="el" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a>, <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">globals.h</a><li>common_channels()
: <a class="el" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">message.h</a>, <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">globals.h</a><li>ConnectUser()
-: <a class="el" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">inspircd.h</a><li>createcommand()
-: <a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">modules.h</a><li>cstatus()
+: <a class="el" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">users.cpp</a><li>ConvToStr()
+: <a class="el" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">users.h</a>, <a class="el" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">users.cpp</a><li>cstatus()
: <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a></ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>DaemonSeed()
: <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">xline.h</a><li>del_qline()
: <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">xline.h</a><li>del_zline()
: <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>DeleteOper()
-: <a class="el" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">inspircd.h</a><li>dns_task()
-: <a class="el" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">inspircd.h</a><li>do_whois()
+: <a class="el" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">users.cpp</a><li>dns_task()
+: <a class="el" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns.h</a><li>do_whois()
: <a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">commands.h</a><li>DoAddExtendedMode()
: <a class="el" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">modules.cpp</a><li>DoBackgroundUserStuff()
: <a class="el" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">userprocess.h</a><li>duration()
: <a class="el" href="xline_8h.html#expire_5Flines_28_29">xline.h</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>factory()
-: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FileExists()
+: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#factory">users.cpp</a>, <a class="el" href="modules_8cpp.html#factory">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FileExists()
: <a class="el" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">inspircd_io.h</a><li>Find()
: <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">globals.h</a><li>FindChan()
: <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">globals.h</a><li>FindServerNamePtr()
: <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">inspircd.h</a><li>force_nickchange()
-: <a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">inspircd.h</a><li>ForceChan()
-: <a class="el" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">channels.cpp</a><li>FullConnectUser()
-: <a class="el" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">inspircd.h</a></ul>
+: <a class="el" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.h</a>, <a class="el" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.cpp</a><li>ForceChan()
+: <a class="el" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">channels.cpp</a><li>from64tobits()
+: <a class="el" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">aes.h</a><li>FullConnectUser()
+: <a class="el" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">users.cpp</a></ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>getadminemail()
: <a class="el" href="globals_8h.html#getadminemail_28_29">globals.h</a><li>getadminname()
: <a class="el" href="globals_8h.html#getadminname_28_29">globals.h</a><li>getadminnick()
: <a class="el" href="globals_8h.html#getadminnick_28_29">globals.h</a><li>getnetworkname()
: <a class="el" href="globals_8h.html#getnetworkname_28_29">globals.h</a><li>getservername()
-: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>give_hops()
-: <a class="el" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_ops()
-: <a class="el" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_voice()
-: <a class="el" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>gline_set_creation_time()
+: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>gline_set_creation_time()
: <a class="el" href="xline_8h.html#gline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handle_admin()
-: <a class="el" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_away()
-: <a class="el" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_commands()
-: <a class="el" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_connect()
-: <a class="el" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_die()
-: <a class="el" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_eline()
-: <a class="el" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_gline()
-: <a class="el" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_info()
-: <a class="el" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_invite()
-: <a class="el" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ison()
-: <a class="el" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_join()
-: <a class="el" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kick()
-: <a class="el" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kill()
-: <a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kline()
-: <a class="el" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_links()
-: <a class="el" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_list()
-: <a class="el" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_loadmodule()
-: <a class="el" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_lusers()
-: <a class="el" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_map()
-: <a class="el" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_mode()
-: <a class="el" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>handle_modules()
-: <a class="el" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_motd()
-: <a class="el" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_names()
-: <a class="el" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_nick()
-: <a class="el" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_notice()
-: <a class="el" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_oper()
-: <a class="el" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_part()
-: <a class="el" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pass()
-: <a class="el" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ping()
-: <a class="el" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pong()
-: <a class="el" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_privmsg()
-: <a class="el" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_qline()
-: <a class="el" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_quit()
-: <a class="el" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rehash()
-: <a class="el" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_restart()
-: <a class="el" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rules()
-: <a class="el" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_server()
-: <a class="el" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_squit()
-: <a class="el" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_stats()
-: <a class="el" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_summon()
-: <a class="el" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_time()
-: <a class="el" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_topic()
-: <a class="el" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_trace()
-: <a class="el" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_unloadmodule()
-: <a class="el" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_user()
-: <a class="el" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_userhost()
-: <a class="el" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_users()
-: <a class="el" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_version()
-: <a class="el" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>handle_wallops()
-: <a class="el" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_who()
-: <a class="el" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whois()
-: <a class="el" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whowas()
-: <a class="el" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_zline()
-: <a class="el" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>has_channel()
+<li>has_channel()
: <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">message.h</a><li>hasumode()
-: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a></ul>
+: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a><li>host_matches_everyone()
+: <a class="el" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">commands.h</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>is_uline()
-: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>is_valid_cmd()
-: <a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>isident()
+<li>ip_matches_everyone()
+: <a class="el" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">commands.h</a><li>is_uline()
+: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>isident()
: <a class="el" href="message_8h.html#isident_28const_20char_20_2An_29">message.h</a><li>isnick()
: <a class="el" href="message_8h.html#isnick_28const_20char_20_2An_29">message.h</a>, <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">globals.h</a></ul>
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
<li>kick_channel()
: <a class="el" href="channels_8h.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.h</a>, <a class="el" href="channels_8cpp.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.cpp</a><li>kill_link()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a><li>kill_link_silent()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a></ul>
+: <a class="el" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a><li>kill_link_silent()
+: <a class="el" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a></ul>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LoadAllModules()
-: <a class="el" href="userprocess_8h.html#LoadAllModules_28_29">userprocess.h</a><li>log()
-: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>loop_call()
-: <a class="el" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">inspircd.h</a></ul>
+: <a class="el" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">userprocess.h</a><li>log()
+: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
<li>matches_exception()
: <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">xline.h</a><li>matches_gline()
: <a class="el" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">xline.h</a><li>matches_kline()
: <a class="el" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">xline.h</a><li>matches_qline()
: <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">xline.h</a><li>matches_zline()
-: <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>merge_mode()
-: <a class="el" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">mode.h</a><li>merge_mode2()
-: <a class="el" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>ModeDefiend()
+: <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>ModeDefiend()
: <a class="el" href="globals_8h.html#ModeDefiend_28char_20c_2C_20int_20i_29">globals.h</a><li>ModeDefined()
: <a class="el" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOff()
: <a class="el" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOn()
: <a class="el" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeIsListMode()
: <a class="el" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeMakeList()
: <a class="el" href="modules_8h.html#ModeMakeList_28char_20modechar_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">modules.cpp</a><li>modules()
-: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
+: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#modules">users.cpp</a>, <a class="el" href="modules_8cpp.html#modules">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NonBlocking()
+<li>nick_matches_everyone()
+: <a class="el" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">commands.h</a><li>NonBlocking()
: <a class="el" href="message_8h.html#NonBlocking_28int_20s_29">message.h</a></ul>
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
<li>OpenLog()
: <a class="el" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">userprocess.h</a><li>OpenTCPSocket()
-: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a></ul>
+: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a><li>operstrcmp()
+: <a class="el" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">commands.h</a></ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>process_buffer()
-: <a class="el" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">inspircd.h</a><li>process_modes()
-: <a class="el" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">mode.h</a><li>process_module_umode()
-: <a class="el" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">mode.h</a><li>ProcessUser()
+<li>ProcessUser()
: <a class="el" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">userprocess.h</a></ul>
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
<li>qline_make_global()
<li>read_xline_defaults()
: <a class="el" href="xline_8h.html#read_5Fxline_5Fdefaults_28_29">xline.h</a><li>readfile()
: <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">globals.h</a><li>ReHashNick()
-: <a class="el" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">inspircd.h</a></ul>
+: <a class="el" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.h</a>, <a class="el" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.cpp</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>send_network_quit()
-: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>server_mode()
-: <a class="el" href="modules_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">modules.h</a>, <a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>Start()
+: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>Start()
: <a class="el" href="inspircd__io_8h.html#Start_28void_29">inspircd_io.h</a><li>stats_e()
: <a class="el" href="xline_8h.html#stats_5Fe_28userrec_20_2Auser_29">xline.h</a><li>stats_g()
: <a class="el" href="xline_8h.html#stats_5Fg_28userrec_20_2Auser_29">xline.h</a><li>stats_k()
: <a class="el" href="xline_8h.html#stats_5Fq_28userrec_20_2Auser_29">xline.h</a><li>stats_z()
: <a class="el" href="xline_8h.html#stats_5Fz_28userrec_20_2Auser_29">xline.h</a></ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>take_ban()
-: <a class="el" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_hops()
-: <a class="el" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_ops()
-: <a class="el" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_voice()
-: <a class="el" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>TidyBan()
+<li>TidyBan()
: <a class="el" href="message_8h.html#TidyBan_28char_20_2Aban_29">message.h</a><li>tidystring()
-: <a class="el" href="message_8h.html#tidystring_28char_20_2Astr_29">message.h</a></ul>
+: <a class="el" href="message_8h.html#tidystring_28char_20_2Astr_29">message.h</a><li>to64frombits()
+: <a class="el" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">aes.h</a></ul>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>Write()
: <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteChannel()
<li>zline_make_global()
: <a class="el" href="xline_8h.html#zline_5Fmake_5Fglobal_28const_20char_20_2Aipaddr_29">xline.h</a><li>zline_set_creation_time()
: <a class="el" href="xline_8h.html#zline_5Fset_5Fcreation_5Ftime_28char_20_2Aip_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
: <a class="el" href="typedefs_8h.html#chan_5Fhash">typedefs.h</a><li>chanuserlist
: <a class="el" href="modules_8h.html#chanuserlist">modules.h</a><li>ClassVector
: <a class="el" href="users_8h.html#ClassVector">users.h</a><li>command_table
-: <a class="el" href="typedefs_8h.html#command_5Ftable">typedefs.h</a><li>ExemptList
+: <a class="el" href="ctables_8h.html#command_5Ftable">ctables.h</a><li>ExemptList
: <a class="el" href="channels_8h.html#ExemptList">channels.h</a><li>ExtModeList
: <a class="el" href="typedefs_8h.html#ExtModeList">typedefs.h</a><li>ExtModeListIter
: <a class="el" href="typedefs_8h.html#ExtModeListIter">typedefs.h</a><li>file_cache
-: <a class="el" href="typedefs_8h.html#file_5Fcache">typedefs.h</a>, <a class="el" href="modules_8h.html#file_5Fcache">modules.h</a>, <a class="el" href="globals_8h.html#file_5Fcache">globals.h</a><li>handlerfunc
-: <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">inspircd.h</a><li>InvitedList
+: <a class="el" href="typedefs_8h.html#file_5Fcache">typedefs.h</a>, <a class="el" href="modules_8h.html#file_5Fcache">modules.h</a>, <a class="el" href="globals_8h.html#file_5Fcache">globals.h</a><li>InvitedList
: <a class="el" href="users_8h.html#InvitedList">users.h</a><li>InviteList
: <a class="el" href="channels_8h.html#InviteList">channels.h</a><li>ircd_module
: <a class="el" href="modules_8h.html#ircd_5Fmodule">modules.h</a><li>servernamelist
: <a class="el" href="typedefs_8h.html#user_5Fhash">typedefs.h</a><li>VoidPointer
: <a class="el" href="base_8h.html#VoidPointer">base.h</a><li>whowas_hash
: <a class="el" href="typedefs_8h.html#whowas_5Fhash">typedefs.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindexHL" href="globals.html">File Members</a></div>
<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a></div>
+<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a></div>
<p>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>APPLY_ALL
+<li>all_opers
+: <a class="el" href="users_8cpp.html#all_5Fopers">users.cpp</a><li>APPLY_ALL
: <a class="el" href="xline_8h.html#APPLY_5FALL">xline.h</a><li>APPLY_GLINES
: <a class="el" href="xline_8h.html#APPLY_5FGLINES">xline.h</a><li>APPLY_KLINES
: <a class="el" href="xline_8h.html#APPLY_5FKLINES">xline.h</a><li>APPLY_QLINES
: <a class="el" href="xline_8h.html#APPLY_5FQLINES">xline.h</a><li>APPLY_ZLINES
: <a class="el" href="xline_8h.html#APPLY_5FZLINES">xline.h</a></ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>boundPortCount
-: <a class="el" href="socket_8cpp.html#boundPortCount">socket.cpp</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>chanlist
: <a class="el" href="modules_8cpp.html#chanlist">modules.cpp</a>, <a class="el" href="channels_8cpp.html#chanlist">channels.cpp</a><li>clientlist
-: <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>cmdlist
+: <a class="el" href="users_8cpp.html#clientlist">users.cpp</a>, <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>cmdlist
: <a class="el" href="modules_8cpp.html#cmdlist">modules.cpp</a><li>Config
: <a class="el" href="users_8cpp.html#Config">users.cpp</a>, <a class="el" href="modules_8cpp.html#Config">modules.cpp</a>, <a class="el" href="channels_8cpp.html#Config">channels.cpp</a><li>custom_mode_params
: <a class="el" href="channels_8cpp.html#custom_5Fmode_5Fparams">channels.cpp</a></ul>
: <a class="el" href="modules_8cpp.html#EMode">modules.cpp</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>factory
-: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>fd_ref_table
-: <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a></ul>
+: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#factory">users.cpp</a>, <a class="el" href="modules_8cpp.html#factory">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>fd_ref_table
+: <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">users.cpp</a>, <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>local_users
+: <a class="el" href="users_8cpp.html#local_5Fusers">users.cpp</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
<li>MODCOUNT
-: <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>module_sockets
-: <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
-: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>openSockfd
-: <a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">socket.cpp</a></ul>
+: <a class="el" href="users_8cpp.html#MODCOUNT">users.cpp</a>, <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>module_sockets
+: <a class="el" href="users_8cpp.html#module_5Fsockets">users.cpp</a>, <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
+: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#modules">users.cpp</a>, <a class="el" href="modules_8cpp.html#modules">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>ref
: <a class="el" href="socketengine_8cpp.html#ref_5B_36_35_35_33_35_5D">socketengine.cpp</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SE
-: <a class="el" href="socket_8cpp.html#SE">socket.cpp</a>, <a class="el" href="modules_8cpp.html#SE">modules.cpp</a><li>ServerInstance
-: <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>socket_ref
-: <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a></ul>
+<li>ServerInstance
+: <a class="el" href="users_8cpp.html#ServerInstance">users.cpp</a>, <a class="el" href="socket_8cpp.html#ServerInstance">socket.cpp</a>, <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>socket_ref
+: <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">users.cpp</a>, <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a></ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>TIME
: <a class="el" href="users_8cpp.html#TIME">users.cpp</a>, <a class="el" href="socket_8cpp.html#TIME">socket.cpp</a>, <a class="el" href="modules_8cpp.html#TIME">modules.cpp</a>, <a class="el" href="channels_8cpp.html#TIME">channels.cpp</a></ul>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>WHOWAS_MAX
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a></ul>
+<li>whowas
+: <a class="el" href="users_8cpp.html#whowas">users.cpp</a><li>WHOWAS_MAX
+: <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
+: <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a></ul>
<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
<li>X_EMPTY_SLOT
: <a class="el" href="socketengine_8h.html#X_5FEMPTY_5FSLOT">socketengine.h</a><li>X_ESTAB_CLIENT
: <a class="el" href="socketengine_8h.html#X_5FESTAB_5FMODULE">socketengine.h</a><li>X_LISTEN
: <a class="el" href="socketengine_8h.html#X_5FLISTEN">socketengine.h</a><li>X_READBIT
: <a class="el" href="socketengine_8h.html#X_5FREADBIT">socketengine.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00130"></a>00130 }
<a name="l00131"></a>00131
<a name="l00132"></a>00132 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="hashcomp_8h__dep__incl.gif" border="0" usemap="#hashcomp.hdep_map" alt=""></center>
<map name="hashcomp.hdep_map">
-<area href="modules_8cpp-source.html" shape="rect" coords="285,7,384,34" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="151,58,236,84" alt="">
-<area href="channels_8cpp-source.html" shape="rect" coords="285,58,384,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="399,58,497,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="408,159,488,186" alt="">
+<area href="users_8h-source.html" shape="rect" coords="152,108,216,135" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="265,58,351,84" alt="">
</map>
<p>
Definition at line <a class="el" href="hashcomp_8h-source.html#l00044">44</a> of file <a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $modules_8cpp-source.html 285,7 384,34
-rect $typedefs_8h-source.html 151,58 236,84
-rect $channels_8cpp-source.html 285,58 384,84
+rect $modules_8cpp-source.html 399,58 497,84
+rect $users_8cpp-source.html 408,159 488,186
+rect $users_8h-source.html 152,108 216,135
+rect $typedefs_8h-source.html 265,58 351,84
-6a6c46b821cf3dc5d3cadf06a3a1391b
\ No newline at end of file
+5670628fe56960fde1c1a397ce860733
\ No newline at end of file
<h1>InspIRCd Class Hierarchy</h1><a href="inherits.html">Go to the graphical class hierarchy</a>
<p>
This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="classAES.html">AES</a>
<li><a class="el" href="classBoolSet.html">BoolSet</a>
<li><a class="el" href="classstd_1_1char__traits.html">char_traits</a>
<ul>
<li><a class="el" href="classExtensible.html">Extensible</a>
<ul>
<li><a class="el" href="classchanrec.html">chanrec</a>
-<li><a class="el" href="classcommand__t.html">command_t</a>
<li><a class="el" href="classconnection.html">connection</a>
<ul>
<li><a class="el" href="classuserrec.html">userrec</a>
<li><a class="el" href="classZLine.html">ZLine</a>
</ul>
</ul>
+<li><a class="el" href="classcommand__t.html">command_t</a>
+<ul>
+<li><a class="el" href="classcmd__mode.html">cmd_mode</a>
+</ul>
<li><a class="el" href="classCullItem.html">CullItem</a>
<li><a class="el" href="classCullList.html">CullList</a>
<li><a class="el" href="classDNS.html">DNS</a>
<li><a class="el" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a>
<li><a class="el" href="classInspIRCd.html">InspIRCd</a>
<li><a class="el" href="classInspSocket.html">InspSocket</a>
+<li><a class="el" href="classModeParser.html">ModeParser</a>
<li><a class="el" href="classserverstats.html">serverstats</a>
<li><a class="el" href="classSocketEngine.html">SocketEngine</a>
<li><a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>
<li><a class="el" href="classWhoWasUser.html">WhoWasUser</a>
</ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $classBoolSet.html 7,7 76,33
+rect $classAES.html 7,7 57,33
-93d9e4fbc2d3cddda9a76d7441754f2b
\ No newline at end of file
+4c1910dbd53656eee7c5c84fc773f193
\ No newline at end of file
base referer
-rect $classstd_1_1char__traits.html 8,7 91,33
-rect $structirc_1_1irc__char__traits.html 140,7 268,33
+rect $classBoolSet.html 7,7 76,33
-9b6f095874e1ac542b37f925a223adb0
\ No newline at end of file
+93d9e4fbc2d3cddda9a76d7441754f2b
\ No newline at end of file
base referer
-rect $structirc_1_1StrHashComp.html 7,7 135,33
+rect $classInspSocket.html 7,7 95,33
-d94ccc9245ee31c76282e2c8ed0c0bb2
\ No newline at end of file
+866431d87448beeff03effa477cb0785
\ No newline at end of file
base referer
-rect $structnspace_1_1hash_3_01in__addr_01_4.html 8,7 176,33
+rect $structirc_1_1InAddr__HashComp.html 7,7 164,33
-40e92872c26375b92021bb12d46d2211
\ No newline at end of file
+3c2c67e0c9a15d3aaf7860ffcd39768e
\ No newline at end of file
base referer
-rect $structnspace_1_1hash_3_01string_01_4.html 7,7 164,33
+rect $structirc_1_1StrHashComp.html 7,7 135,33
-317e8030ba500855ca30d38cc6449d34
\ No newline at end of file
+d94ccc9245ee31c76282e2c8ed0c0bb2
\ No newline at end of file
base referer
-rect $classserverstats.html 7,7 95,33
+rect $classModeParser.html 8,7 101,33
-cf48882e944fddb7efa2fe6a320e8c63
\ No newline at end of file
+f8e776a077ef5ca7f74ae7545b260b83
\ No newline at end of file
base referer
-rect $classSocketEngine.html 8,7 112,33
+rect $structnspace_1_1hash_3_01in__addr_01_4.html 8,7 176,33
-949dcc70479b42522977703d4bb0a709
\ No newline at end of file
+40e92872c26375b92021bb12d46d2211
\ No newline at end of file
base referer
-rect $classWhoWasUser.html 8,7 112,33
+rect $structnspace_1_1hash_3_01string_01_4.html 7,7 164,33
-5bff511d62c6faa81cdb63b1f78f6cd8
\ No newline at end of file
+317e8030ba500855ca30d38cc6449d34
\ No newline at end of file
base referer
-rect $classclassbase.html 8,412 88,439
-rect $classAdmin.html 167,7 228,33
-rect $classConfigReader.html 146,57 250,84
-rect $classConnectClass.html 146,108 250,135
-rect $classExtensible.html 156,159 239,185
-rect $classExtMode.html 160,209 235,236
-rect $classFileReader.html 154,260 242,287
-rect $classHostItem.html 160,311 235,337
-rect $classInvited.html 167,361 228,388
-rect $classModeParameter.html 139,412 256,439
-rect $classModule.html 164,463 231,489
-rect $classModuleFactory.html 143,513 252,540
-rect $classModuleMessage.html 138,564 258,591
-rect $classServer.html 167,615 228,641
-rect $classServerConfig.html 147,665 248,692
-rect $classucrec.html 171,716 224,743
-rect $classVersion.html 164,767 231,793
-rect $classXLine.html 170,817 226,844
-rect $classchanrec.html 319,108 388,135
-rect $classcommand__t.html 308,159 399,185
-rect $classconnection.html 311,209 396,236
-rect $classuserrec.html 450,209 516,236
-rect $classBanItem.html 318,260 390,287
-rect $classExemptItem.html 307,311 400,337
-rect $classInviteItem.html 314,361 394,388
-rect $classEvent.html 326,539 382,565
-rect $classRequest.html 318,589 390,616
-rect $classELine.html 326,716 382,743
-rect $classGLine.html 324,767 383,793
-rect $classKLine.html 326,817 382,844
-rect $classQLine.html 324,868 383,895
-rect $classZLine.html 326,919 382,945
+rect $classstd_1_1char__traits.html 8,7 91,33
+rect $structirc_1_1irc__char__traits.html 140,7 268,33
-6d4274482c5e5284d113f8910d688065
\ No newline at end of file
+9b6f095874e1ac542b37f925a223adb0
\ No newline at end of file
base referer
-rect $classCullItem.html 7,7 79,33
+rect $classclassbase.html 8,412 88,439
+rect $classAdmin.html 167,7 228,33
+rect $classConfigReader.html 146,57 250,84
+rect $classConnectClass.html 146,108 250,135
+rect $classExtensible.html 156,159 239,185
+rect $classExtMode.html 160,209 235,236
+rect $classFileReader.html 154,260 242,287
+rect $classHostItem.html 160,311 235,337
+rect $classInvited.html 167,361 228,388
+rect $classModeParameter.html 139,412 256,439
+rect $classModule.html 164,463 231,489
+rect $classModuleFactory.html 143,513 252,540
+rect $classModuleMessage.html 138,564 258,591
+rect $classServer.html 167,615 228,641
+rect $classServerConfig.html 147,665 248,692
+rect $classucrec.html 171,716 224,743
+rect $classVersion.html 164,767 231,793
+rect $classXLine.html 170,817 226,844
+rect $classchanrec.html 319,133 388,160
+rect $classconnection.html 311,184 396,211
+rect $classuserrec.html 450,184 516,211
+rect $classBanItem.html 318,260 390,287
+rect $classExemptItem.html 307,311 400,337
+rect $classInviteItem.html 314,361 394,388
+rect $classEvent.html 326,539 382,565
+rect $classRequest.html 318,589 390,616
+rect $classELine.html 326,716 382,743
+rect $classGLine.html 324,767 383,793
+rect $classKLine.html 326,817 382,844
+rect $classQLine.html 324,868 383,895
+rect $classZLine.html 326,919 382,945
-04d1a5175492509e76bb27f8c708e6ac
\ No newline at end of file
+8b70355902672fcff82486b7fba0d379
\ No newline at end of file
base referer
-rect $classCullList.html 7,7 73,33
+rect $classcommand__t.html 8,7 99,33
+rect $classcmd__mode.html 149,7 237,33
-fc7a10efd1ef64cd67f77b97165cd78b
\ No newline at end of file
+3dde6dbafbcda9e1b64a7ed5d68e5a93
\ No newline at end of file
base referer
-rect $classDNS.html 7,7 57,33
+rect $classCullItem.html 7,7 79,33
-d39d1604b95cefdfc240566a784bc1e0
\ No newline at end of file
+04d1a5175492509e76bb27f8c708e6ac
\ No newline at end of file
base referer
-rect $structdns__ip4list.html 7,7 92,33
+rect $classCullList.html 7,7 73,33
-f91f9b746cbe9764b077e0f96e3d53c0
\ No newline at end of file
+fc7a10efd1ef64cd67f77b97165cd78b
\ No newline at end of file
base referer
-rect $classInspIRCd.html 7,7 84,33
+rect $classDNS.html 7,7 57,33
-027440a4e7d81cbfbc813d6bda090a43
\ No newline at end of file
+d39d1604b95cefdfc240566a784bc1e0
\ No newline at end of file
base referer
-rect $classInspSocket.html 7,7 95,33
+rect $structdns__ip4list.html 7,7 92,33
-866431d87448beeff03effa477cb0785
\ No newline at end of file
+f91f9b746cbe9764b077e0f96e3d53c0
\ No newline at end of file
base referer
-rect $structirc_1_1InAddr__HashComp.html 7,7 164,33
+rect $classInspIRCd.html 7,7 84,33
-3c2c67e0c9a15d3aaf7860ffcd39768e
\ No newline at end of file
+027440a4e7d81cbfbc813d6bda090a43
\ No newline at end of file
<h1>InspIRCd Graphical Class Hierarchy</h1><a href="hierarchy.html">Go to the textual class hierarchy</a>
<p>
<table border="0" cellspacing="10" cellpadding="0">
-<tr><td><img src="inherit__graph__0.gif" border="0" alt="" usemap="#BoolSet_map">
+<tr><td><img src="inherit__graph__0.gif" border="0" alt="" usemap="#AES_map">
+<map name="AES_map">
+<area href="classAES.html" shape="rect" coords="7,7,57,33" alt="">
+</map></td></tr>
+<tr><td><img src="inherit__graph__1.gif" border="0" alt="" usemap="#BoolSet_map">
<map name="BoolSet_map">
<area href="classBoolSet.html" shape="rect" coords="7,7,76,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__1.gif" border="0" alt="" usemap="#char__traits_map">
+<tr><td><img src="inherit__graph__2.gif" border="0" alt="" usemap="#char__traits_map">
<map name="char__traits_map">
<area href="classstd_1_1char__traits.html" shape="rect" coords="8,7,91,33" alt="">
<area href="structirc_1_1irc__char__traits.html" shape="rect" coords="140,7,268,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__2.gif" border="0" alt="" usemap="#classbase_map">
+<tr><td><img src="inherit__graph__3.gif" border="0" alt="" usemap="#classbase_map">
<map name="classbase_map">
<area href="classclassbase.html" shape="rect" coords="8,412,88,439" alt="">
<area href="classAdmin.html" shape="rect" coords="167,7,228,33" alt="">
<area href="classucrec.html" shape="rect" coords="171,716,224,743" alt="">
<area href="classVersion.html" shape="rect" coords="164,767,231,793" alt="">
<area href="classXLine.html" shape="rect" coords="170,817,226,844" alt="">
-<area href="classchanrec.html" shape="rect" coords="319,108,388,135" alt="">
-<area href="classcommand__t.html" shape="rect" coords="308,159,399,185" alt="">
-<area href="classconnection.html" shape="rect" coords="311,209,396,236" alt="">
-<area href="classuserrec.html" shape="rect" coords="450,209,516,236" alt="">
+<area href="classchanrec.html" shape="rect" coords="319,133,388,160" alt="">
+<area href="classconnection.html" shape="rect" coords="311,184,396,211" alt="">
+<area href="classuserrec.html" shape="rect" coords="450,184,516,211" alt="">
<area href="classBanItem.html" shape="rect" coords="318,260,390,287" alt="">
<area href="classExemptItem.html" shape="rect" coords="307,311,400,337" alt="">
<area href="classInviteItem.html" shape="rect" coords="314,361,394,388" alt="">
<area href="classQLine.html" shape="rect" coords="324,868,383,895" alt="">
<area href="classZLine.html" shape="rect" coords="326,919,382,945" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__3.gif" border="0" alt="" usemap="#CullItem_map">
+<tr><td><img src="inherit__graph__4.gif" border="0" alt="" usemap="#command__t_map">
+<map name="command__t_map">
+<area href="classcommand__t.html" shape="rect" coords="8,7,99,33" alt="">
+<area href="classcmd__mode.html" shape="rect" coords="149,7,237,33" alt="">
+</map></td></tr>
+<tr><td><img src="inherit__graph__5.gif" border="0" alt="" usemap="#CullItem_map">
<map name="CullItem_map">
<area href="classCullItem.html" shape="rect" coords="7,7,79,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__4.gif" border="0" alt="" usemap="#CullList_map">
+<tr><td><img src="inherit__graph__6.gif" border="0" alt="" usemap="#CullList_map">
<map name="CullList_map">
<area href="classCullList.html" shape="rect" coords="7,7,73,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__5.gif" border="0" alt="" usemap="#DNS_map">
+<tr><td><img src="inherit__graph__7.gif" border="0" alt="" usemap="#DNS_map">
<map name="DNS_map">
<area href="classDNS.html" shape="rect" coords="7,7,57,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__6.gif" border="0" alt="" usemap="#dns__ip4list_map">
+<tr><td><img src="inherit__graph__8.gif" border="0" alt="" usemap="#dns__ip4list_map">
<map name="dns__ip4list_map">
<area href="structdns__ip4list.html" shape="rect" coords="7,7,92,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__7.gif" border="0" alt="" usemap="#InspIRCd_map">
+<tr><td><img src="inherit__graph__9.gif" border="0" alt="" usemap="#InspIRCd_map">
<map name="InspIRCd_map">
<area href="classInspIRCd.html" shape="rect" coords="7,7,84,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__8.gif" border="0" alt="" usemap="#InspSocket_map">
+<tr><td><img src="inherit__graph__10.gif" border="0" alt="" usemap="#InspSocket_map">
<map name="InspSocket_map">
<area href="classInspSocket.html" shape="rect" coords="7,7,95,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__9.gif" border="0" alt="" usemap="#irc_1_1InAddr__HashComp_map">
+<tr><td><img src="inherit__graph__11.gif" border="0" alt="" usemap="#irc_1_1InAddr__HashComp_map">
<map name="irc_1_1InAddr__HashComp_map">
<area href="structirc_1_1InAddr__HashComp.html" shape="rect" coords="7,7,164,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__10.gif" border="0" alt="" usemap="#irc_1_1StrHashComp_map">
+<tr><td><img src="inherit__graph__12.gif" border="0" alt="" usemap="#irc_1_1StrHashComp_map">
<map name="irc_1_1StrHashComp_map">
<area href="structirc_1_1StrHashComp.html" shape="rect" coords="7,7,135,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__11.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01in__addr_01_4_map">
+<tr><td><img src="inherit__graph__13.gif" border="0" alt="" usemap="#ModeParser_map">
+<map name="ModeParser_map">
+<area href="classModeParser.html" shape="rect" coords="8,7,101,33" alt="">
+</map></td></tr>
+<tr><td><img src="inherit__graph__14.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01in__addr_01_4_map">
<map name="nspace_1_1hash_3_01in__addr_01_4_map">
<area href="structnspace_1_1hash_3_01in__addr_01_4.html" shape="rect" coords="8,7,176,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__12.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01string_01_4_map">
+<tr><td><img src="inherit__graph__15.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01string_01_4_map">
<map name="nspace_1_1hash_3_01string_01_4_map">
<area href="structnspace_1_1hash_3_01string_01_4.html" shape="rect" coords="7,7,164,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__13.gif" border="0" alt="" usemap="#serverstats_map">
+<tr><td><img src="inherit__graph__16.gif" border="0" alt="" usemap="#serverstats_map">
<map name="serverstats_map">
<area href="classserverstats.html" shape="rect" coords="7,7,95,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__14.gif" border="0" alt="" usemap="#SocketEngine_map">
+<tr><td><img src="inherit__graph__17.gif" border="0" alt="" usemap="#SocketEngine_map">
<map name="SocketEngine_map">
<area href="classSocketEngine.html" shape="rect" coords="8,7,112,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__15.gif" border="0" alt="" usemap="#WhoWasUser_map">
+<tr><td><img src="inherit__graph__18.gif" border="0" alt="" usemap="#WhoWasUser_map">
<map name="WhoWasUser_map">
<area href="classWhoWasUser.html" shape="rect" coords="8,7,112,33" alt="">
</map></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:21 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00039"></a>00039 <span class="preprocessor">#include <deque></span>
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="comment">// some misc defines</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "command_parse.h"</span>
<a name="l00048"></a>00048
-<a name="l00049"></a><a class="code" href="inspircd_8h.html#ERROR">00049</a> <span class="preprocessor">#define ERROR -1</span>
-<a name="l00050"></a><a class="code" href="inspircd_8h.html#TRUE">00050</a> <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
-<a name="l00051"></a><a class="code" href="inspircd_8h.html#FALSE">00051</a> <span class="preprocessor"></span><span class="preprocessor">#define FALSE 0</span>
-<a name="l00052"></a><a class="code" href="inspircd_8h.html#MAXSOCKS">00052</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXSOCKS 64</span>
-<a name="l00053"></a><a class="code" href="inspircd_8h.html#MAXCOMMAND">00053</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXCOMMAND 32</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>
-<a name="l00055"></a>00055 <span class="comment">// flags for use with WriteMode</span>
-<a name="l00056"></a>00056
-<a name="l00057"></a><a class="code" href="inspircd_8h.html#WM_5FAND">00057</a> <span class="preprocessor">#define WM_AND 1</span>
-<a name="l00058"></a><a class="code" href="inspircd_8h.html#WM_5FOR">00058</a> <span class="preprocessor"></span><span class="preprocessor">#define WM_OR 2</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>
-<a name="l00060"></a>00060 <span class="comment">// flags for use with OnUserPreMessage and OnUserPreNotice</span>
-<a name="l00061"></a>00061
-<a name="l00062"></a><a class="code" href="inspircd_8h.html#TYPE_5FUSER">00062</a> <span class="preprocessor">#define TYPE_USER 1</span>
-<a name="l00063"></a><a class="code" href="inspircd_8h.html#TYPE_5FCHANNEL">00063</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_CHANNEL 2</span>
-<a name="l00064"></a><a class="code" href="inspircd_8h.html#TYPE_5FSERVER">00064</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_SERVER 3</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span>
-<a name="l00066"></a><a class="code" href="inspircd_8h.html#IS_5FLOCAL_28x_29">00066</a> <span class="preprocessor">#define IS_LOCAL(x) (x->fd > -1)</span>
-<a name="l00067"></a><a class="code" href="inspircd_8h.html#IS_5FREMOTE_28x_29">00067</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_REMOTE(x) (x->fd < 0)</span>
-<a name="l00068"></a><a class="code" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">00068</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>
-<a name="l00070"></a><a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">00070</a> <span class="keyword">typedef</span> void (<a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>) (<span class="keywordtype">char</span>**, int, <a class="code" href="classuserrec.html">userrec</a>*);
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="classserverstats.html">00072</a> <span class="keyword">class </span><a class="code" href="classserverstats.html">serverstats</a>
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">public</span>:
-<a name="l00075"></a><a class="code" href="classserverstats.html#statsAccept">00075</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsAccept">statsAccept</a>;
-<a name="l00076"></a><a class="code" href="classserverstats.html#statsRefused">00076</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRefused">statsRefused</a>;
-<a name="l00077"></a><a class="code" href="classserverstats.html#statsUnknown">00077</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a>;
-<a name="l00078"></a><a class="code" href="classserverstats.html#statsCollisions">00078</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>;
-<a name="l00079"></a><a class="code" href="classserverstats.html#statsDns">00079</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDns">statsDns</a>;
-<a name="l00080"></a><a class="code" href="classserverstats.html#statsDnsGood">00080</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a>;
-<a name="l00081"></a><a class="code" href="classserverstats.html#statsDnsBad">00081</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a>;
-<a name="l00082"></a><a class="code" href="classserverstats.html#statsConnects">00082</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsConnects">statsConnects</a>;
-<a name="l00083"></a><a class="code" href="classserverstats.html#statsSent">00083</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsSent">statsSent</a>;
-<a name="l00084"></a><a class="code" href="classserverstats.html#statsRecv">00084</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRecv">statsRecv</a>;
-<a name="l00085"></a>00085
-<a name="l00086"></a><a class="code" href="classserverstats.html#serverstats_28_29">00086</a> <a class="code" href="classserverstats.html#serverstats_28_29">serverstats</a>()
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
-<a name="l00090"></a>00090 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 };
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="classInspIRCd.html">00095</a> <span class="keyword">class </span><a class="code" href="classInspIRCd.html">InspIRCd</a>
-<a name="l00096"></a>00096 {
+<a name="l00049"></a>00049 <span class="comment">// some misc defines</span>
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="inspircd_8h.html#ERROR">00051</a> <span class="preprocessor">#define ERROR -1</span>
+<a name="l00052"></a><a class="code" href="inspircd_8h.html#TRUE">00052</a> <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
+<a name="l00053"></a><a class="code" href="inspircd_8h.html#FALSE">00053</a> <span class="preprocessor"></span><span class="preprocessor">#define FALSE 0</span>
+<a name="l00054"></a><a class="code" href="inspircd_8h.html#MAXSOCKS">00054</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXSOCKS 64</span>
+<a name="l00055"></a><a class="code" href="inspircd_8h.html#MAXCOMMAND">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXCOMMAND 32</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00057"></a>00057 <span class="comment">/*</span>
+<a name="l00058"></a>00058 <span class="comment">flags for use with WriteMode</span>
+<a name="l00059"></a>00059 <span class="comment"></span>
+<a name="l00060"></a>00060 <span class="comment">#define WM_AND 1</span>
+<a name="l00061"></a>00061 <span class="comment">#define WM_OR 2</span>
+<a name="l00062"></a>00062 <span class="comment"></span>
+<a name="l00063"></a>00063 <span class="comment">flags for use with OnUserPreMessage and OnUserPreNotice</span>
+<a name="l00064"></a>00064 <span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">#define TYPE_USER 1</span>
+<a name="l00066"></a>00066 <span class="comment">#define TYPE_CHANNEL 2</span>
+<a name="l00067"></a>00067 <span class="comment">#define TYPE_SERVER 3</span>
+<a name="l00068"></a>00068 <span class="comment"></span>
+<a name="l00069"></a>00069 <span class="comment">#define IS_LOCAL(x) (x->fd > -1)</span>
+<a name="l00070"></a>00070 <span class="comment">#define IS_REMOTE(x) (x->fd < 0)</span>
+<a name="l00071"></a>00071 <span class="comment">#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)</span>
+<a name="l00072"></a>00072 <span class="comment">*/</span>
+<a name="l00073"></a>00073
+<a name="l00074"></a><a class="code" href="classserverstats.html">00074</a> <span class="keyword">class </span><a class="code" href="classserverstats.html">serverstats</a>
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keyword">public</span>:
+<a name="l00077"></a><a class="code" href="classserverstats.html#statsAccept">00077</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsAccept">statsAccept</a>;
+<a name="l00078"></a><a class="code" href="classserverstats.html#statsRefused">00078</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRefused">statsRefused</a>;
+<a name="l00079"></a><a class="code" href="classserverstats.html#statsUnknown">00079</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a>;
+<a name="l00080"></a><a class="code" href="classserverstats.html#statsCollisions">00080</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>;
+<a name="l00081"></a><a class="code" href="classserverstats.html#statsDns">00081</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDns">statsDns</a>;
+<a name="l00082"></a><a class="code" href="classserverstats.html#statsDnsGood">00082</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a>;
+<a name="l00083"></a><a class="code" href="classserverstats.html#statsDnsBad">00083</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a>;
+<a name="l00084"></a><a class="code" href="classserverstats.html#statsConnects">00084</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsConnects">statsConnects</a>;
+<a name="l00085"></a><a class="code" href="classserverstats.html#statsSent">00085</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsSent">statsSent</a>;
+<a name="l00086"></a><a class="code" href="classserverstats.html#statsRecv">00086</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRecv">statsRecv</a>;
+<a name="l00087"></a><a class="code" href="classserverstats.html#BoundPortCount">00087</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#BoundPortCount">BoundPortCount</a>;
+<a name="l00088"></a>00088
+<a name="l00089"></a><a class="code" href="classserverstats.html#serverstats_28_29">00089</a> <a class="code" href="classserverstats.html#serverstats_28_29">serverstats</a>()
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
+<a name="l00094"></a>00094 <a class="code" href="classserverstats.html#BoundPortCount">BoundPortCount</a> = 0;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 };
<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="keyword">private</span>:
-<a name="l00099"></a><a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">00099</a> <span class="keywordtype">char</span> <a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">MODERR</a>[MAXBUF];
-<a name="l00100"></a>00100 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Ffactory_28int_20j_29">erase_factory</a>(<span class="keywordtype">int</span> j);
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Fmodule_28int_20j_29">erase_module</a>(<span class="keywordtype">int</span> j);
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="keyword">public</span>:
-<a name="l00104"></a><a class="code" href="classInspIRCd.html#startup_5Ftime">00104</a> time_t <a class="code" href="classInspIRCd.html#startup_5Ftime">startup_time</a>;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetRevision_28_29">GetRevision</a>();
-<a name="l00107"></a>00107 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
-<a name="l00108"></a>00108 <span class="keywordtype">char</span>* <a class="code" href="classInspIRCd.html#ModuleError_28_29">ModuleError</a>();
-<a name="l00109"></a>00109 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">LoadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
-<a name="l00110"></a>00110 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#UnloadModule_28const_20char_20_2Afilename_29">UnloadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
-<a name="l00111"></a>00111 <a class="code" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
-<a name="l00112"></a>00112 <span class="keywordtype">int</span> <a class="code" href="classInspIRCd.html#Run_28_29">Run</a>();
+<a name="l00098"></a>00098
+<a name="l00099"></a><a class="code" href="classInspIRCd.html">00099</a> <span class="keyword">class </span><a class="code" href="classInspIRCd.html">InspIRCd</a>
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keyword">private</span>:
+<a name="l00103"></a><a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">00103</a> <span class="keywordtype">char</span> <a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">MODERR</a>[MAXBUF];
+<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Ffactory_28int_20j_29">erase_factory</a>(<span class="keywordtype">int</span> j);
+<a name="l00105"></a>00105 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Fmodule_28int_20j_29">erase_module</a>(<span class="keywordtype">int</span> j);
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keyword">public</span>:
+<a name="l00108"></a><a class="code" href="classInspIRCd.html#startup_5Ftime">00108</a> time_t <a class="code" href="classInspIRCd.html#startup_5Ftime">startup_time</a>;
+<a name="l00109"></a><a class="code" href="classInspIRCd.html#ModeGrok">00109</a> <a class="code" href="classModeParser.html">ModeParser</a>* <a class="code" href="classInspIRCd.html#ModeGrok">ModeGrok</a>;
+<a name="l00110"></a><a class="code" href="classInspIRCd.html#Parser">00110</a> CommandParser* <a class="code" href="classInspIRCd.html#Parser">Parser</a>;
+<a name="l00111"></a><a class="code" href="classInspIRCd.html#SE">00111</a> <a class="code" href="classSocketEngine.html">SocketEngine</a>* <a class="code" href="classInspIRCd.html#SE">SE</a>;
+<a name="l00112"></a><a class="code" href="classInspIRCd.html#stats">00112</a> <a class="code" href="classserverstats.html">serverstats</a>* <a class="code" href="classInspIRCd.html#stats">stats</a>;
<a name="l00113"></a>00113
-<a name="l00114"></a>00114 };
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="comment">/* prototypes */</span>
-<a name="l00117"></a>00117 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keyword">const</span> <span class="keywordtype">char</span>* newnick);
-<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
-<a name="l00119"></a>00119 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
-<a name="l00120"></a>00120 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* commandname,<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00121"></a>00121 <span class="keywordtype">bool</span> <a class="code" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> * user);
-<a name="l00122"></a>00122 <span class="keywordtype">int</span> <a class="code" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">loop_call</a>(<a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> fn, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *u, <span class="keywordtype">int</span> start, <span class="keywordtype">int</span> end, <span class="keywordtype">int</span> joins);
-<a name="l00123"></a>00123 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(<a class="code" href="classuserrec.html">userrec</a>* u);
-<a name="l00124"></a>00124 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00125"></a>00125 <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a>(<span class="keywordtype">char</span>* Old, <span class="keywordtype">char</span>* New);
-<a name="l00126"></a>00126 <span class="comment">/* optimization tricks to save us walking the user hash */</span>
-<a name="l00127"></a>00127 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">AddOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00128"></a>00128 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00129"></a>00129 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_version</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00130"></a>00130 <span class="comment">/* userrec optimization stuff */</span>
-<a name="l00131"></a>00131 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">AddServerName</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
-<a name="l00132"></a>00132 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
-<a name="l00133"></a>00133 <span class="keywordtype">void</span>* <a class="code" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a>(<span class="keywordtype">void</span>* arg);
-<a name="l00134"></a>00134 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">process_buffer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* cmdbuf,<a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00135"></a>00135 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00114"></a>00114 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#MakeLowerMap_28_29">MakeLowerMap</a>();
+<a name="l00115"></a>00115 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetRevision_28_29">GetRevision</a>();
+<a name="l00116"></a>00116 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
+<a name="l00117"></a>00117 <span class="keywordtype">char</span>* <a class="code" href="classInspIRCd.html#ModuleError_28_29">ModuleError</a>();
+<a name="l00118"></a>00118 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">LoadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
+<a name="l00119"></a>00119 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#UnloadModule_28const_20char_20_2Afilename_29">UnloadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
+<a name="l00120"></a>00120 <a class="code" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
+<a name="l00121"></a>00121 <span class="keywordtype">int</span> <a class="code" href="classInspIRCd.html#Run_28_29">Run</a>();
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 };
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="comment">/* userrec optimization stuff */</span>
+<a name="l00126"></a>00126 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">AddServerName</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
+<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include <arpa/inet.h></code><br>
<code>#include <deque></code><br>
<code>#include "<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>"</code><br>
-<code>#include "inspircd_util.h"</code><br>
<code>#include "<a class="el" href="users_8h-source.html">users.h</a>"</code><br>
<code>#include "<a class="el" href="channels_8h-source.html">channels.h</a>"</code><br>
<code>#include "<a class="el" href="socket_8h-source.html">socket.h</a>"</code><br>
+<code>#include "<a class="el" href="mode_8h-source.html">mode.h</a>"</code><br>
+<code>#include "<a class="el" href="socketengine_8h-source.html">socketengine.h</a>"</code><br>
+<code>#include "command_parse.h"</code><br>
<p>
Include dependency graph for inspircd.h:<p><center><img src="inspircd_8h__incl.gif" border="0" usemap="#inspircd.h_map" alt=""></center>
<map name="inspircd.h_map">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="139,615,235,642" alt="">
-<area href="users_8h-source.html" shape="rect" coords="155,868,219,895" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="292,868,377,895" alt="">
-<area href="socket_8h-source.html" shape="rect" coords="151,463,223,490" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="153,442,249,468" alt="">
+<area href="users_8h-source.html" shape="rect" coords="332,290,396,316" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="461,188,547,215" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="165,644,237,671" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="168,290,235,316" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="145,492,257,519" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="inspircd_8h__dep__incl.gif" border="0" usemap="#inspircd.hdep_map" alt=""></center>
<map name="inspircd.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="469,83,568,110" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="469,260,568,287" alt="">
-<area href="socket_8cpp-source.html" shape="rect" coords="315,362,400,388" alt="">
-<area href="socketengine_8cpp-source.html" shape="rect" coords="295,463,420,490" alt="">
-<area href="users_8cpp-source.html" shape="rect" coords="151,514,231,540" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="153,159,228,186" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="315,108,400,135" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="143,260,239,287" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="135,412,247,439" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="308,57,407,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="308,133,407,160" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="315,209,400,236" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="295,336,420,363" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="318,260,398,287" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="143,57,239,84" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="135,260,247,287" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="148,108,234,135" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="139,412,243,439" alt="">
</map>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#MAXCOMMAND">MAXCOMMAND</a> 32</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#WM_5FAND">WM_AND</a> 1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#WM_5FOR">WM_OR</a> 2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#TYPE_5FUSER">TYPE_USER</a> 1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#TYPE_5FCHANNEL">TYPE_CHANNEL</a> 2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#TYPE_5FSERVER">TYPE_SERVER</a> 3</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#IS_5FLOCAL_28x_29">IS_LOCAL</a>(x) (x->fd > -1)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#IS_5FREMOTE_28x_29">IS_REMOTE</a>(x) (x->fd < 0)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">IS_MODULE_CREATED</a>(x) (x->fd == FD_MAGIC_NUMBER)</td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void( </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> )(char **, int, <a class="el" href="classuserrec.html">userrec</a> *)</td></tr>
-
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *newnick)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a> (const char *commandname, char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a> (const char *commandname, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">loop_call</a> (<a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> fn, char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *u, int start, int end, int joins)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a> (<a class="el" href="classuserrec.html">userrec</a> *u)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a> (char *Old, char *New)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">AddOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_version</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">AddServerName</a> (<a class="el" href="namespaceirc.html#string">std::string</a> servername)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a> (<a class="el" href="namespaceirc.html#string">std::string</a> servername)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a> (void *arg)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">process_buffer</a> (const char *cmdbuf, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="ERROR"></a><!-- doxytag: member="inspircd.h::ERROR" ref="ERROR" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00049">49</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00051">51</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="FALSE"></a><!-- doxytag: member="inspircd.h::FALSE" ref="FALSE" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00051">51</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="IS_5FLOCAL_28x_29"></a><!-- doxytag: member="inspircd.h::IS_LOCAL" ref="IS_5FLOCAL_28x_29" args="(x)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define IS_LOCAL </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">x </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap> (x->fd > -1)</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00066">66</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="IS_5FMODULE_5FCREATED_28x_29"></a><!-- doxytag: member="inspircd.h::IS_MODULE_CREATED" ref="IS_5FMODULE_5FCREATED_28x_29" args="(x)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define IS_MODULE_CREATED </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">x </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap> (x->fd == FD_MAGIC_NUMBER)</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00068">68</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="IS_5FREMOTE_28x_29"></a><!-- doxytag: member="inspircd.h::IS_REMOTE" ref="IS_5FREMOTE_28x_29" args="(x)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define IS_REMOTE </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">x </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap> (x->fd < 0)</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00067">67</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00053">53</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MAXCOMMAND"></a><!-- doxytag: member="inspircd.h::MAXCOMMAND" ref="MAXCOMMAND" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00053">53</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00055">55</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MAXSOCKS"></a><!-- doxytag: member="inspircd.h::MAXSOCKS" ref="MAXSOCKS" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00052">52</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00054">54</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<a class="anchor" name="TRUE"></a><!-- doxytag: member="inspircd.h::TRUE" ref="TRUE" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00050">50</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="TYPE_5FCHANNEL"></a><!-- doxytag: member="inspircd.h::TYPE_CHANNEL" ref="TYPE_5FCHANNEL" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define TYPE_CHANNEL 2 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00063">63</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="TYPE_5FSERVER"></a><!-- doxytag: member="inspircd.h::TYPE_SERVER" ref="TYPE_5FSERVER" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define TYPE_SERVER 3 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00064">64</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="TYPE_5FUSER"></a><!-- doxytag: member="inspircd.h::TYPE_USER" ref="TYPE_5FUSER" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define TYPE_USER 1 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00062">62</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="WM_5FAND"></a><!-- doxytag: member="inspircd.h::WM_AND" ref="WM_5FAND" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define WM_AND 1 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00057">57</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="WM_5FOR"></a><!-- doxytag: member="inspircd.h::WM_OR" ref="WM_5FOR" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define WM_OR 2 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00058">58</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29"></a><!-- doxytag: member="inspircd.h::handlerfunc" ref="handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29" args=")(char **, int, userrec *)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef void( <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>)(char **, int, <a class="el" href="classuserrec.html">userrec</a> *) </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00070">70</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00052">52</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
-<a class="anchor" name="AddOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::AddOper" ref="AddOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<a class="anchor" name="AddServerName_28std_3A_3Astring_20servername_29"></a><!-- doxytag: member="inspircd.h::AddServerName" ref="AddServerName_28std_3A_3Astring_20servername_29" args="(std::string servername)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void AddOper </td>
+ <td class="md" nowrap valign="top">void AddServerName </td>
<td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
+ <td class="mdname1" valign="top" nowrap> <em>servername</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</td>
</tr>
</table>
-<a class="anchor" name="AddServerName_28std_3A_3Astring_20servername_29"></a><!-- doxytag: member="inspircd.h::AddServerName" ref="AddServerName_28std_3A_3Astring_20servername_29" args="(std::string servername)" --><p>
+<a class="anchor" name="FindServerNamePtr_28std_3A_3Astring_20servername_29"></a><!-- doxytag: member="inspircd.h::FindServerNamePtr" ref="FindServerNamePtr_28std_3A_3Astring_20servername_29" args="(std::string servername)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void AddServerName </td>
+ <td class="md" nowrap valign="top">const char* FindServerNamePtr </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
<td class="mdname1" valign="top" nowrap> <em>servername</em> </td>
<td>
<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="AddWhoWas_28userrec_20_2Au_29"></a><!-- doxytag: member="inspircd.h::AddWhoWas" ref="AddWhoWas_28userrec_20_2Au_29" args="(userrec *u)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void AddWhoWas </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname1" valign="top" nowrap> <em>u</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::call_handler" ref="call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(const char *commandname, char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void call_handler </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">const char * </td>
- <td class="mdname" nowrap> <em>commandname</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00401">Server::CallCommandHandler()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="ConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::ConnectUser" ref="ConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void ConnectUser </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="DeleteOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::DeleteOper" ref="DeleteOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void DeleteOper </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="dns_5Ftask_28void_20_2Aarg_29"></a><!-- doxytag: member="inspircd.h::dns_task" ref="dns_5Ftask_28void_20_2Aarg_29" args="(void *arg)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void* dns_task </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">void * </td>
- <td class="mdname1" valign="top" nowrap> <em>arg</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="FindServerNamePtr_28std_3A_3Astring_20servername_29"></a><!-- doxytag: member="inspircd.h::FindServerNamePtr" ref="FindServerNamePtr_28std_3A_3Astring_20servername_29" args="(std::string servername)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">const char* FindServerNamePtr </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> </td>
- <td class="mdname1" valign="top" nowrap> <em>servername</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29"></a><!-- doxytag: member="inspircd.h::force_nickchange" ref="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29" args="(userrec *user, const char *newnick)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void force_nickchange </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const char * </td>
- <td class="mdname" nowrap> <em>newnick</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00386">Server::ChangeUserNick()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="FullConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::FullConnectUser" ref="FullConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void FullConnectUser </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::handle_version" ref="handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_version </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::is_valid_cmd" ref="is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(const char *commandname, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool is_valid_cmd </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">const char * </td>
- <td class="mdname" nowrap> <em>commandname</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00406">Server::IsValidModuleCommand()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="inspircd.h::kill_link" ref="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void kill_link </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const char * </td>
- <td class="mdname" nowrap> <em>r</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00391">Server::QuitUser()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="inspircd.h::kill_link_silent" ref="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void kill_link_silent </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const char * </td>
- <td class="mdname" nowrap> <em>r</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29"></a><!-- doxytag: member="inspircd.h::loop_call" ref="loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29" args="(handlerfunc fn, char **parameters, int pcnt, userrec *u, int start, int end, int joins)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int loop_call </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> </td>
- <td class="mdname" nowrap> <em>fn</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>u</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>end</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>joins</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::process_buffer" ref="process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29" args="(const char *cmdbuf, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void process_buffer </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">const char * </td>
- <td class="mdname" nowrap> <em>cmdbuf</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29"></a><!-- doxytag: member="inspircd.h::ReHashNick" ref="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29" args="(char *Old, char *New)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* ReHashNick </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
- <td class="mdname" nowrap> <em>Old</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>New</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 469,83 568,110
-rect $modules_8cpp-source.html 469,260 568,287
-rect $socket_8cpp-source.html 315,362 400,388
-rect $socketengine_8cpp-source.html 295,463 420,490
-rect $users_8cpp-source.html 151,514 231,540
-rect $ctables_8h-source.html 153,159 228,186
-rect $typedefs_8h-source.html 315,108 400,135
-rect $inspircd__io_8h-source.html 143,260 239,287
-rect $socketengine_8h-source.html 135,412 247,439
+rect $channels_8cpp-source.html 308,57 407,84
+rect $modules_8cpp-source.html 308,133 407,160
+rect $socket_8cpp-source.html 315,209 400,236
+rect $socketengine_8cpp-source.html 295,336 420,363
+rect $users_8cpp-source.html 318,260 398,287
+rect $inspircd__io_8h-source.html 143,57 239,84
+rect $socketengine_8h-source.html 135,260 247,287
+rect $typedefs_8h-source.html 148,108 234,135
+rect $userprocess_8h-source.html 139,412 243,439
-782bd90da01c2446bdc3773deda660d0
\ No newline at end of file
+ad3d11c83e25465927be164f7731df76
\ No newline at end of file
base referer
-rect $inspircd__io_8h-source.html 139,615 235,642
-rect $users_8h-source.html 155,868 219,895
-rect $channels_8h-source.html 292,868 377,895
-rect $socket_8h-source.html 151,463 223,490
+rect $inspircd__io_8h-source.html 153,442 249,468
+rect $users_8h-source.html 332,290 396,316
+rect $channels_8h-source.html 461,188 547,215
+rect $socket_8h-source.html 165,644 237,671
+rect $mode_8h-source.html 168,290 235,316
+rect $socketengine_8h-source.html 145,492 257,519
-8358cd32839305504555325b345eb8ff
\ No newline at end of file
+c78ac143e7cad9df2d2ae01b74f98cc9
\ No newline at end of file
<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00028"></a><a class="code" href="inspircd__io_8h.html#DEBUG">00028</a> <span class="preprocessor">#define DEBUG 10</span>
-<a name="l00029"></a><a class="code" href="inspircd__io_8h.html#VERBOSE">00029</a> <span class="preprocessor"></span><span class="preprocessor">#define VERBOSE 20</span>
-<a name="l00030"></a><a class="code" href="inspircd__io_8h.html#DEFAULT">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT 30</span>
-<a name="l00031"></a><a class="code" href="inspircd__io_8h.html#SPARSE">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define SPARSE 40</span>
-<a name="l00032"></a><a class="code" href="inspircd__io_8h.html#NONE">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define NONE 50</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00039"></a><a class="code" href="classServerConfig.html">00039</a> <span class="keyword">class </span><a class="code" href="classServerConfig.html">ServerConfig</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keyword">private</span>:
-<a name="l00047"></a><a class="code" href="classServerConfig.html#include_5Fstack">00047</a> std::vector<std::string> <a class="code" href="classServerConfig.html#include_5Fstack">include_stack</a>;
-<a name="l00048"></a>00048
-<a name="l00055"></a>00055 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a>(<span class="keywordtype">char</span>* buffer, size_t maxsize, FILE* &file);
-<a name="l00056"></a>00056
-<a name="l00061"></a>00061 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ConfProcess</a>(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">long</span> linenumber, std::stringstream* errorstream, <span class="keywordtype">bool</span> &error, <a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">public</span>:
-<a name="l00064"></a>00064
-<a name="l00068"></a><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">00068</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>[MAXBUF];
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="comment">/* Holds the network name the local server</span>
-<a name="l00071"></a>00071 <span class="comment"> * belongs to. This is an arbitary field defined</span>
-<a name="l00072"></a>00072 <span class="comment"> * by the administrator.</span>
-<a name="l00073"></a>00073 <span class="comment"> */</span>
-<a name="l00074"></a><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">00074</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>[MAXBUF];
-<a name="l00075"></a>00075
-<a name="l00079"></a><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">00079</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>[MAXBUF];
-<a name="l00080"></a>00080
-<a name="l00084"></a><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">00084</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>[MAXBUF];
-<a name="l00085"></a>00085
-<a name="l00089"></a><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">00089</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>[MAXBUF];
-<a name="l00090"></a>00090
-<a name="l00094"></a><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">00094</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>[MAXBUF];
-<a name="l00095"></a>00095
-<a name="l00098"></a><a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">00098</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">diepass</a>[MAXBUF];
-<a name="l00099"></a>00099
-<a name="l00102"></a><a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">00102</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">restartpass</a>[MAXBUF];
-<a name="l00103"></a>00103
-<a name="l00107"></a><a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">00107</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">motd</a>[MAXBUF];
-<a name="l00108"></a>00108
-<a name="l00112"></a><a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">00112</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a>[MAXBUF];
-<a name="l00113"></a>00113
-<a name="l00116"></a><a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">00116</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">PrefixQuit</a>[MAXBUF];
-<a name="l00117"></a>00117
-<a name="l00121"></a><a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">00121</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">DieValue</a>[MAXBUF];
-<a name="l00122"></a>00122
-<a name="l00125"></a><a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">00125</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">DNSServer</a>[MAXBUF];
-<a name="l00126"></a>00126
-<a name="l00131"></a><a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">00131</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">DisabledCommands</a>[MAXBUF];
-<a name="l00132"></a>00132
-<a name="l00138"></a><a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">00138</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ModPath</a>[1024];
-<a name="l00139"></a>00139
-<a name="l00143"></a><a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">00143</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">MyExecutable</a>[1024];
-<a name="l00144"></a>00144
-<a name="l00151"></a><a class="code" href="classServerConfig.html#log_5Ffile">00151</a> FILE *<a class="code" href="classServerConfig.html#log_5Ffile">log_file</a>;
-<a name="l00152"></a>00152
-<a name="l00158"></a><a class="code" href="classServerConfig.html#nofork">00158</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#nofork">nofork</a>;
-<a name="l00159"></a>00159
-<a name="l00166"></a><a class="code" href="classServerConfig.html#unlimitcore">00166</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#unlimitcore">unlimitcore</a>;
-<a name="l00167"></a>00167
-<a name="l00171"></a><a class="code" href="classServerConfig.html#AllowHalfop">00171</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#AllowHalfop">AllowHalfop</a>;
-<a name="l00172"></a>00172
-<a name="l00176"></a><a class="code" href="classServerConfig.html#dns_5Ftimeout">00176</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
-<a name="l00177"></a>00177
-<a name="l00182"></a><a class="code" href="classServerConfig.html#NetBufferSize">00182</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#NetBufferSize">NetBufferSize</a>;
-<a name="l00183"></a>00183
-<a name="l00187"></a><a class="code" href="classServerConfig.html#MaxConn">00187</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxConn">MaxConn</a>;
-<a name="l00188"></a>00188
-<a name="l00193"></a><a class="code" href="classServerConfig.html#SoftLimit">00193</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>;
-<a name="l00194"></a>00194
-<a name="l00198"></a><a class="code" href="classServerConfig.html#MaxWhoResults">00198</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxWhoResults">MaxWhoResults</a>;
-<a name="l00199"></a>00199
-<a name="l00202"></a><a class="code" href="classServerConfig.html#debugging">00202</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#debugging">debugging</a>;
-<a name="l00203"></a>00203
-<a name="l00206"></a><a class="code" href="classServerConfig.html#LogLevel">00206</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#LogLevel">LogLevel</a>;
-<a name="l00207"></a>00207
-<a name="l00211"></a><a class="code" href="classServerConfig.html#DieDelay">00211</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#DieDelay">DieDelay</a>;
-<a name="l00212"></a>00212
-<a name="l00216"></a><a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">00216</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">addrs</a>[MAXBUF][255];
-<a name="l00217"></a>00217
-<a name="l00220"></a><a class="code" href="classServerConfig.html#MOTD">00220</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#MOTD">MOTD</a>;
-<a name="l00221"></a>00221
-<a name="l00224"></a><a class="code" href="classServerConfig.html#RULES">00224</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#RULES">RULES</a>;
-<a name="l00225"></a>00225
-<a name="l00229"></a><a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">00229</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">PID</a>[1024];
-<a name="l00230"></a>00230
-<a name="l00238"></a><a class="code" href="classServerConfig.html#config_5Ff">00238</a> std::stringstream <a class="code" href="classServerConfig.html#config_5Ff">config_f</a>;
-<a name="l00239"></a>00239
-<a name="l00242"></a><a class="code" href="classServerConfig.html#Classes">00242</a> <a class="code" href="users_8h.html#ClassVector">ClassVector</a> <a class="code" href="classServerConfig.html#Classes">Classes</a>;
-<a name="l00243"></a>00243
-<a name="l00247"></a><a class="code" href="classServerConfig.html#module_5Fnames">00247</a> std::vector<std::string> <a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>;
-<a name="l00248"></a>00248
-<a name="l00251"></a><a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">00251</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">ports</a>[255];
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <a class="code" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a>();
-<a name="l00254"></a>00254
-<a name="l00258"></a>00258 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00026"></a>00026
+<a name="l00029"></a><a class="code" href="inspircd__io_8h.html#DEBUG">00029</a> <span class="preprocessor">#define DEBUG 10</span>
+<a name="l00030"></a><a class="code" href="inspircd__io_8h.html#VERBOSE">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define VERBOSE 20</span>
+<a name="l00031"></a><a class="code" href="inspircd__io_8h.html#DEFAULT">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT 30</span>
+<a name="l00032"></a><a class="code" href="inspircd__io_8h.html#SPARSE">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define SPARSE 40</span>
+<a name="l00033"></a><a class="code" href="inspircd__io_8h.html#NONE">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define NONE 50</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00040"></a><a class="code" href="classServerConfig.html">00040</a> <span class="keyword">class </span><a class="code" href="classServerConfig.html">ServerConfig</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keyword">private</span>:
+<a name="l00048"></a><a class="code" href="classServerConfig.html#include_5Fstack">00048</a> std::vector<std::string> <a class="code" href="classServerConfig.html#include_5Fstack">include_stack</a>;
+<a name="l00049"></a>00049
+<a name="l00056"></a>00056 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a>(<span class="keywordtype">char</span>* buffer, size_t maxsize, FILE* &file);
+<a name="l00057"></a>00057
+<a name="l00062"></a>00062 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ConfProcess</a>(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">long</span> linenumber, std::stringstream* errorstream, <span class="keywordtype">bool</span> &error, <a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">public</span>:
+<a name="l00065"></a>00065
+<a name="l00069"></a><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">00069</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>[MAXBUF];
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="comment">/* Holds the network name the local server</span>
+<a name="l00072"></a>00072 <span class="comment"> * belongs to. This is an arbitary field defined</span>
+<a name="l00073"></a>00073 <span class="comment"> * by the administrator.</span>
+<a name="l00074"></a>00074 <span class="comment"> */</span>
+<a name="l00075"></a><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">00075</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>[MAXBUF];
+<a name="l00076"></a>00076
+<a name="l00080"></a><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">00080</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>[MAXBUF];
+<a name="l00081"></a>00081
+<a name="l00085"></a><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">00085</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>[MAXBUF];
+<a name="l00086"></a>00086
+<a name="l00090"></a><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">00090</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>[MAXBUF];
+<a name="l00091"></a>00091
+<a name="l00095"></a><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">00095</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>[MAXBUF];
+<a name="l00096"></a>00096
+<a name="l00099"></a><a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">00099</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">diepass</a>[MAXBUF];
+<a name="l00100"></a>00100
+<a name="l00103"></a><a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">00103</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">restartpass</a>[MAXBUF];
+<a name="l00104"></a>00104
+<a name="l00108"></a><a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">00108</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">motd</a>[MAXBUF];
+<a name="l00109"></a>00109
+<a name="l00113"></a><a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">00113</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a>[MAXBUF];
+<a name="l00114"></a>00114
+<a name="l00117"></a><a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">00117</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">PrefixQuit</a>[MAXBUF];
+<a name="l00118"></a>00118
+<a name="l00122"></a><a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">00122</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">DieValue</a>[MAXBUF];
+<a name="l00123"></a>00123
+<a name="l00126"></a><a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">00126</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">DNSServer</a>[MAXBUF];
+<a name="l00127"></a>00127
+<a name="l00132"></a><a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">00132</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">DisabledCommands</a>[MAXBUF];
+<a name="l00133"></a>00133
+<a name="l00139"></a><a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">00139</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ModPath</a>[1024];
+<a name="l00140"></a>00140
+<a name="l00144"></a><a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">00144</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">MyExecutable</a>[1024];
+<a name="l00145"></a>00145
+<a name="l00152"></a><a class="code" href="classServerConfig.html#log_5Ffile">00152</a> FILE *<a class="code" href="classServerConfig.html#log_5Ffile">log_file</a>;
+<a name="l00153"></a>00153
+<a name="l00159"></a><a class="code" href="classServerConfig.html#nofork">00159</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#nofork">nofork</a>;
+<a name="l00160"></a>00160
+<a name="l00167"></a><a class="code" href="classServerConfig.html#unlimitcore">00167</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#unlimitcore">unlimitcore</a>;
+<a name="l00168"></a>00168
+<a name="l00172"></a><a class="code" href="classServerConfig.html#AllowHalfop">00172</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#AllowHalfop">AllowHalfop</a>;
+<a name="l00173"></a>00173
+<a name="l00177"></a><a class="code" href="classServerConfig.html#dns_5Ftimeout">00177</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00178"></a>00178
+<a name="l00183"></a><a class="code" href="classServerConfig.html#NetBufferSize">00183</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#NetBufferSize">NetBufferSize</a>;
+<a name="l00184"></a>00184
+<a name="l00188"></a><a class="code" href="classServerConfig.html#MaxConn">00188</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxConn">MaxConn</a>;
+<a name="l00189"></a>00189
+<a name="l00194"></a><a class="code" href="classServerConfig.html#SoftLimit">00194</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>;
+<a name="l00195"></a>00195
+<a name="l00199"></a><a class="code" href="classServerConfig.html#MaxWhoResults">00199</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxWhoResults">MaxWhoResults</a>;
+<a name="l00200"></a>00200
+<a name="l00203"></a><a class="code" href="classServerConfig.html#debugging">00203</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#debugging">debugging</a>;
+<a name="l00204"></a>00204
+<a name="l00207"></a><a class="code" href="classServerConfig.html#LogLevel">00207</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#LogLevel">LogLevel</a>;
+<a name="l00208"></a>00208
+<a name="l00212"></a><a class="code" href="classServerConfig.html#DieDelay">00212</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#DieDelay">DieDelay</a>;
+<a name="l00213"></a>00213
+<a name="l00217"></a><a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">00217</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">addrs</a>[MAXBUF][255];
+<a name="l00218"></a>00218
+<a name="l00221"></a><a class="code" href="classServerConfig.html#MOTD">00221</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#MOTD">MOTD</a>;
+<a name="l00222"></a>00222
+<a name="l00225"></a><a class="code" href="classServerConfig.html#RULES">00225</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#RULES">RULES</a>;
+<a name="l00226"></a>00226
+<a name="l00230"></a><a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">00230</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">PID</a>[1024];
+<a name="l00231"></a>00231
+<a name="l00239"></a><a class="code" href="classServerConfig.html#config_5Ff">00239</a> std::stringstream <a class="code" href="classServerConfig.html#config_5Ff">config_f</a>;
+<a name="l00240"></a>00240
+<a name="l00243"></a><a class="code" href="classServerConfig.html#Classes">00243</a> <a class="code" href="users_8h.html#ClassVector">ClassVector</a> <a class="code" href="classServerConfig.html#Classes">Classes</a>;
+<a name="l00244"></a>00244
+<a name="l00248"></a><a class="code" href="classServerConfig.html#module_5Fnames">00248</a> std::vector<std::string> <a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>;
+<a name="l00249"></a>00249
+<a name="l00252"></a><a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">00252</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">ports</a>[255];
+<a name="l00253"></a>00253
+<a name="l00256"></a><a class="code" href="classServerConfig.html#IOHookModule">00256</a> std::map<int,Module*> <a class="code" href="classServerConfig.html#IOHookModule">IOHookModule</a>;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <a class="code" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a>();
<a name="l00259"></a>00259
-<a name="l00264"></a>00264 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, std::stringstream *target, std::stringstream* errorstream);
-<a name="l00267"></a>00267 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="keywordtype">char</span>* tag, <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result, std::stringstream *config);
-<a name="l00268"></a>00268 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keyword">const</span> <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result);
-<a name="l00269"></a>00269 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValueEnum</a>(<span class="keywordtype">char</span>* tag,std::stringstream *config);
-<a name="l00270"></a>00270 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag);
-<a name="l00271"></a>00271 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(std::stringstream *config, <span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keywordtype">int</span> index);
-<a name="l00272"></a>00272 };
-<a name="l00273"></a>00273
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Exit_28int_29">Exit</a> (<span class="keywordtype">int</span>);
-<a name="l00276"></a>00276 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Start_28void_29">Start</a> (<span class="keywordtype">void</span>);
-<a name="l00277"></a>00277 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#DaemonSeed_28void_29">DaemonSeed</a> (<span class="keywordtype">void</span>);
-<a name="l00278"></a>00278 <span class="keywordtype">bool</span> <a class="code" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">FileExists</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* file);
-<a name="l00279"></a>00279 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a> (<span class="keywordtype">void</span>);
-<a name="l00280"></a>00280 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a> (<span class="keywordtype">int</span> sockfd, <span class="keyword">struct</span> sockaddr_in client, <span class="keyword">struct</span> sockaddr_in server, <span class="keywordtype">int</span> port, <span class="keywordtype">char</span>* addr);
-<a name="l00281"></a>00281 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#WritePID_28std_3A_3Astring_20filename_29">WritePID</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l00282"></a>00282 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindPorts_28_29">BindPorts</a>();
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00263"></a>00263 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00264"></a>00264
+<a name="l00269"></a>00269 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, std::stringstream *target, std::stringstream* errorstream);
+<a name="l00272"></a>00272 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="keywordtype">char</span>* tag, <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result, std::stringstream *config);
+<a name="l00273"></a>00273 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keyword">const</span> <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result);
+<a name="l00274"></a>00274 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValueEnum</a>(<span class="keywordtype">char</span>* tag,std::stringstream *config);
+<a name="l00275"></a>00275 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag);
+<a name="l00276"></a>00276 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(std::stringstream *config, <span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keywordtype">int</span> index);
+<a name="l00277"></a>00277 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(<span class="keywordtype">int</span> port);
+<a name="l00278"></a>00278 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">AddIOHook</a>(<span class="keywordtype">int</span> port, <a class="code" href="classModule.html">Module</a>* iomod);
+<a name="l00279"></a>00279 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#DelIOHook_28int_20port_29">DelIOHook</a>(<span class="keywordtype">int</span> port);
+<a name="l00280"></a>00280 };
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282
+<a name="l00283"></a>00283 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Exit_28int_29">Exit</a> (<span class="keywordtype">int</span>);
+<a name="l00284"></a>00284 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Start_28void_29">Start</a> (<span class="keywordtype">void</span>);
+<a name="l00285"></a>00285 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#DaemonSeed_28void_29">DaemonSeed</a> (<span class="keywordtype">void</span>);
+<a name="l00286"></a>00286 <span class="keywordtype">bool</span> <a class="code" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">FileExists</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* file);
+<a name="l00287"></a>00287 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a> (<span class="keywordtype">void</span>);
+<a name="l00288"></a>00288 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a> (<span class="keywordtype">int</span> sockfd, <span class="keyword">struct</span> sockaddr_in client, <span class="keyword">struct</span> sockaddr_in server, <span class="keywordtype">int</span> port, <span class="keywordtype">char</span>* addr);
+<a name="l00289"></a>00289 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#WritePID_28std_3A_3Astring_20filename_29">WritePID</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l00290"></a>00290 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindPorts_28_29">BindPorts</a>();
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include <vector></code><br>
<code>#include "<a class="el" href="inspircd_8h-source.html">inspircd.h</a>"</code><br>
<code>#include "<a class="el" href="globals_8h-source.html">globals.h</a>"</code><br>
+<code>#include "<a class="el" href="modules_8h-source.html">modules.h</a>"</code><br>
<p>
Include dependency graph for inspircd_io.h:<p><center><img src="inspircd__io_8h__incl.gif" border="0" usemap="#inspircd_io.h_map" alt=""></center>
<map name="inspircd_io.h_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="153,159,233,186" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="156,210,231,236" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="156,209,236,236" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="159,159,234,185" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="155,57,238,84" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="inspircd__io_8h__dep__incl.gif" border="0" usemap="#inspircd_io.hdep_map" alt=""></center>
<map name="inspircd_io.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="283,20,381,47" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="283,96,381,123" alt="">
-<area href="socket_8cpp-source.html" shape="rect" coords="289,147,375,173" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="153,57,233,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="455,58,553,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="455,235,553,262" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="461,463,547,490" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="153,286,233,312" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="441,387,567,414" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="464,311,544,338" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="281,362,393,388" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="295,260,380,287" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="285,159,389,186" alt="">
</map>
<p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00028">28</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00029">29</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="channels_8cpp-source.html#l00167">chanrec::AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="socket_8cpp-source.html#l00158">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00086">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00248">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00292">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8cpp-source.html#l00330">AddOper()</a>, <a class="el" href="channels_8cpp-source.html#l00166">chanrec::AddUser()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="users_8cpp-source.html#l00336">DeleteOper()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="socket_8cpp-source.html#l00155">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00743">ReHashNick()</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00085">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00247">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00317">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
</tr>
</table>
<a class="anchor" name="DEFAULT"></a><!-- doxytag: member="inspircd_io.h::DEFAULT" ref="DEFAULT" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00030">30</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00031">31</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="NONE"></a><!-- doxytag: member="inspircd_io.h::NONE" ref="NONE" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00032">32</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00033">33</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="SPARSE"></a><!-- doxytag: member="inspircd_io.h::SPARSE" ref="SPARSE" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00031">31</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00032">32</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="VERBOSE"></a><!-- doxytag: member="inspircd_io.h::VERBOSE" ref="VERBOSE" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00029">29</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00030">30</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
<p>
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="DaemonSeed_28void_29"></a><!-- doxytag: member="inspircd_io.h::DaemonSeed" ref="DaemonSeed_28void_29" args="(void)" --><p>
<p>
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="Start_28void_29"></a><!-- doxytag: member="inspircd_io.h::Start" ref="Start_28void_29" args="(void)" --><p>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 283,20 381,47
-rect $modules_8cpp-source.html 283,96 381,123
-rect $socket_8cpp-source.html 289,147 375,173
-rect $inspircd_8h-source.html 153,57 233,84
+rect $channels_8cpp-source.html 455,58 553,84
+rect $modules_8cpp-source.html 455,235 553,262
+rect $socket_8cpp-source.html 461,463 547,490
+rect $inspircd_8h-source.html 153,286 233,312
+rect $socketengine_8cpp-source.html 441,387 567,414
+rect $users_8cpp-source.html 464,311 544,338
+rect $socketengine_8h-source.html 281,362 393,388
+rect $typedefs_8h-source.html 295,260 380,287
+rect $userprocess_8h-source.html 285,159 389,186
-722bc875f4773acca578188c1eaafc53
\ No newline at end of file
+f69ba85152f09a6ee03d3d86a8d8993d
\ No newline at end of file
base referer
-rect $inspircd_8h-source.html 153,159 233,186
-rect $globals_8h-source.html 156,210 231,236
+rect $inspircd_8h-source.html 156,209 236,236
+rect $globals_8h-source.html 159,159 234,185
+rect $modules_8h-source.html 155,57 238,84
-a89903b24a07224b6560b828285cf5bb
\ No newline at end of file
+c18e01279feebe46cef6ba0a08a63a37
\ No newline at end of file
<div class="qindex"><a class="qindexHL" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>InspIRCd Documentation</h1>
<p>
-<h3 align="center">1.0Betareleases </h3><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<h3 align="center">1.0Betareleases </h3><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">send_network_quit</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* nick, <span class="keyword">const</span> <span class="keywordtype">char</span>* reason);
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Include dependency graph for message.h:<p><center><img src="message_8h__incl.gif" border="0" usemap="#message.h_map" alt=""></center>
<map name="message.h_map">
<area href="users_8h-source.html" shape="rect" coords="148,260,212,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="272,210,357,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="265,362,364,388" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="272,209,357,236" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="265,412,364,439" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="268,311,361,337" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="message_8h__dep__incl.gif" border="0" usemap="#message.hdep_map" alt=""></center>
<map name="message.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="144,7,243,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="144,58,243,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="144,7,243,33" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="144,57,243,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="154,108,234,135" alt="">
</map>
<p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00494">Server::ChangeHost()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00493">Server::ChangeHost()</a>. </td>
</tr>
</table>
<a class="anchor" name="ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29"></a><!-- doxytag: member="message.h::ChangeName" ref="ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29" args="(userrec *user, const char *gecos)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00499">Server::ChangeGECOS()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00498">Server::ChangeGECOS()</a>. </td>
</tr>
</table>
<a class="anchor" name="chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29"></a><!-- doxytag: member="message.h::chlist" ref="chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29" args="(userrec *user, userrec *source)" --><p>
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00529">Server::IsOnChannel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00528">Server::IsOnChannel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="hasumode_28userrec_20_2Auser_2C_20char_20mode_29"></a><!-- doxytag: member="message.h::hasumode" ref="hasumode_28userrec_20_2Auser_2C_20char_20mode_29" args="(userrec *user, char mode)" --><p>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 144,7 243,34
-rect $modules_8cpp-source.html 144,58 243,84
+rect $channels_8cpp-source.html 144,7 243,33
+rect $modules_8cpp-source.html 144,57 243,84
+rect $users_8cpp-source.html 154,108 234,135
-5798528055639d3c9fa4c0dd420993b1
\ No newline at end of file
+2920c49d06760a3a8744ed87304dc5db
\ No newline at end of file
base referer
rect $users_8h-source.html 148,260 212,287
-rect $channels_8h-source.html 272,210 357,236
-rect $connection_8h-source.html 265,362 364,388
+rect $channels_8h-source.html 272,209 357,236
+rect $connection_8h-source.html 265,412 364,439
+rect $hashcomp_8h-source.html 268,311 361,337
-3a2c4208881b372cdcae2d492b4dfb49
\ No newline at end of file
+ea36c3bc5c3e318c0edcaea3bd1ee778
\ No newline at end of file
<a name="l00027"></a>00027 <span class="preprocessor">#include <vector></span>
<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_ops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00032"></a>00032 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_hops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00033"></a>00033 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_voice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00034"></a>00034 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00035"></a>00035 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_hops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00036"></a>00036 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_voice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00037"></a>00037 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">add_ban</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00038"></a>00038 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ban</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">process_modes</a>(<span class="keywordtype">char</span> **parameters,<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status, <span class="keywordtype">int</span> pcnt, <span class="keywordtype">bool</span> servermode, <span class="keywordtype">bool</span> silent, <span class="keywordtype">bool</span> local);
-<a name="l00040"></a>00040 <span class="keywordtype">bool</span> <a class="code" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">allowed_umode</a>(<span class="keywordtype">char</span> umode, <span class="keywordtype">char</span>* sourcemodes,<span class="keywordtype">bool</span> adding);
-<a name="l00041"></a>00041 <span class="keywordtype">bool</span> <a class="code" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">process_module_umode</a>(<span class="keywordtype">char</span> umode, <a class="code" href="classuserrec.html">userrec</a>* source, <span class="keywordtype">void</span>* dest, <span class="keywordtype">bool</span> adding);
-<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">merge_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt);
-<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">merge_mode2</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+<a name="l00031"></a>00031
+<a name="l00032"></a><a class="code" href="classModeParser.html">00032</a> <span class="keyword">class </span><a class="code" href="classModeParser.html">ModeParser</a>
+<a name="l00033"></a>00033 {
+<a name="l00034"></a>00034 <span class="keyword">private</span>:
+<a name="l00035"></a>00035 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#GiveOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">GiveOps</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00036"></a>00036 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#GiveHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">GiveHops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00037"></a>00037 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#GiveVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">GiveVoice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00038"></a>00038 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeOps</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00039"></a>00039 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeHops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00040"></a>00040 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeVoice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00041"></a>00041 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#AddBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">AddBan</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00042"></a>00042 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeBan</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00043"></a>00043 <span class="keyword">public</span>:
+<a name="l00044"></a>00044 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classModeParser.html#CompressModes_28std_3A_3Astring_20modes_2C_20bool_20channelmodes_29">CompressModes</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes,<span class="keywordtype">bool</span> channelmodes);
+<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classModeParser.html#ProcessModes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">ProcessModes</a>(<span class="keywordtype">char</span> **parameters,<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status, <span class="keywordtype">int</span> pcnt, <span class="keywordtype">bool</span> servermode, <span class="keywordtype">bool</span> silent, <span class="keywordtype">bool</span> local);
+<a name="l00046"></a>00046 <span class="keywordtype">bool</span> <a class="code" href="classModeParser.html#AllowedUmode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_2C_20bool_20serveroverride_29">AllowedUmode</a>(<span class="keywordtype">char</span> umode, <span class="keywordtype">char</span>* sourcemodes,<span class="keywordtype">bool</span> adding,<span class="keywordtype">bool</span> serveroverride);
+<a name="l00047"></a>00047 <span class="keywordtype">bool</span> <a class="code" href="classModeParser.html#ProcessModuleUmode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">ProcessModuleUmode</a>(<span class="keywordtype">char</span> umode, <a class="code" href="classuserrec.html">userrec</a>* source, <span class="keywordtype">void</span>* dest, <span class="keywordtype">bool</span> adding);
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ServerMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="classcmd__mode.html">00051</a> <span class="keyword">class </span><a class="code" href="classcmd__mode.html">cmd_mode</a> : <span class="keyword">public</span> <a class="code" href="classcommand__t.html">command_t</a>
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <span class="keyword">public</span>:
+<a name="l00054"></a><a class="code" href="classcmd__mode.html#cmd_5Fmode_28_29">00054</a> <a class="code" href="classcmd__mode.html#cmd_5Fmode_28_29">cmd_mode</a> () : <a class="code" href="classcommand__t.html">command_t</a>(<span class="stringliteral">"MODE"</span>,0,1) { }
+<a name="l00055"></a>00055 <span class="keywordtype">void</span> <a class="code" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Handle</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00056"></a>00056 };
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include <vector></code><br>
<code>#include "<a class="el" href="users_8h-source.html">users.h</a>"</code><br>
<code>#include "<a class="el" href="channels_8h-source.html">channels.h</a>"</code><br>
+<code>#include "<a class="el" href="ctables_8h-source.html">ctables.h</a>"</code><br>
<p>
Include dependency graph for mode.h:<p><center><img src="mode_8h__incl.gif" border="0" usemap="#mode.h_map" alt=""></center>
<map name="mode.h_map">
-<area href="users_8h-source.html" shape="rect" coords="127,260,191,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="251,210,336,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="244,362,343,388" alt="">
+<area href="users_8h-source.html" shape="rect" coords="128,311,192,337" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="248,361,333,388" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="123,108,197,135" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="mode_8h__dep__incl.gif" border="0" usemap="#mode.hdep_map" alt=""></center>
<map name="mode.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="123,7,221,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="123,58,221,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="423,108,521,135" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="423,210,521,236" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="121,286,201,312" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="429,311,515,338" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="409,438,535,464" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="432,362,512,388" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="257,159,353,186" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="249,362,361,388" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="263,210,348,236" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="253,514,357,540" alt="">
</map>
<p>
<a href="mode_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_ops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classModeParser.html">ModeParser</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_hops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classcmd__mode.html">cmd_mode</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_voice</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_hops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_voice</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">add_ban</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ban</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">process_modes</a> (char **parameters, <a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status, int pcnt, bool servermode, bool silent, bool local)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">allowed_umode</a> (char umode, char *sourcemodes, bool adding)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">process_module_umode</a> (char umode, <a class="el" href="classuserrec.html">userrec</a> *source, void *dest, bool adding)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_mode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">merge_mode</a> (char **parameters, int pcnt)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">merge_mode2</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::add_ban" ref="add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* add_ban </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29"></a><!-- doxytag: member="mode.h::allowed_umode" ref="allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29" args="(char umode, char *sourcemodes, bool adding)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool allowed_umode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char </td>
- <td class="mdname" nowrap> <em>umode</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>sourcemodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool </td>
- <td class="mdname" nowrap> <em>adding</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::give_hops" ref="give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* give_hops </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::give_ops" ref="give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* give_ops </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::give_voice" ref="give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* give_voice </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="mode.h::handle_mode" ref="handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_mode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29"></a><!-- doxytag: member="mode.h::merge_mode" ref="merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29" args="(char **parameters, int pcnt)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void merge_mode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="mode.h::merge_mode2" ref="merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void merge_mode2 </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29"></a><!-- doxytag: member="mode.h::process_modes" ref="process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29" args="(char **parameters, userrec *user, chanrec *chan, int status, int pcnt, bool servermode, bool silent, bool local)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void process_modes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool </td>
- <td class="mdname" nowrap> <em>servermode</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool </td>
- <td class="mdname" nowrap> <em>silent</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool </td>
- <td class="mdname" nowrap> <em>local</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29"></a><!-- doxytag: member="mode.h::process_module_umode" ref="process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29" args="(char umode, userrec *source, void *dest, bool adding)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool process_module_umode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char </td>
- <td class="mdname" nowrap> <em>umode</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>source</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>void * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool </td>
- <td class="mdname" nowrap> <em>adding</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="mode.h::server_mode" ref="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void server_mode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00421">Server::SendMode()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_ban" ref="take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_ban </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_hops" ref="take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_hops </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_ops" ref="take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_ops </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_voice" ref="take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_voice </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> * </td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 123,7 221,34
-rect $modules_8cpp-source.html 123,58 221,84
+rect $channels_8cpp-source.html 423,108 521,135
+rect $modules_8cpp-source.html 423,210 521,236
+rect $inspircd_8h-source.html 121,286 201,312
+rect $socket_8cpp-source.html 429,311 515,338
+rect $socketengine_8cpp-source.html 409,438 535,464
+rect $users_8cpp-source.html 432,362 512,388
+rect $inspircd__io_8h-source.html 257,159 353,186
+rect $socketengine_8h-source.html 249,362 361,388
+rect $typedefs_8h-source.html 263,210 348,236
+rect $userprocess_8h-source.html 253,514 357,540
-fd59f64e403f74c533d4d585052df75c
\ No newline at end of file
+a468254eb82a333e8e171f75c5a95c2c
\ No newline at end of file
base referer
-rect $users_8h-source.html 127,260 191,287
-rect $channels_8h-source.html 251,210 336,236
-rect $connection_8h-source.html 244,362 343,388
+rect $users_8h-source.html 128,311 192,337
+rect $channels_8h-source.html 248,361 333,388
+rect $ctables_8h-source.html 123,108 197,135
-3d060c191165c8107d912ed1383b6923
\ No newline at end of file
+65cc27648a712202e38cf2a89d5cde55
\ No newline at end of file
<a name="l00019"></a>00019 <span class="preprocessor">#include "inspircd_config.h"</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <unistd.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sys/errno.h></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <time.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <string></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#ifdef GCC3</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#else</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#include <map></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include <sstream></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include <vector></span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include <deque></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include "dynamic.h"</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include "wildcard.h"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include "inspstring.h"</span>
-<a name="l00047"></a>00047 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
-<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
-<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
-<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keyword">extern</span> <a class="code" href="classSocketEngine.html">SocketEngine</a>* <a class="code" href="modules_8cpp.html#SE">SE</a>;
+<a name="l00022"></a>00022 <span class="preprocessor">#include <unistd.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <sys/errno.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <time.h></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <string></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#ifdef GCC3</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#else</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include <map></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include <sstream></span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include <vector></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include <deque></span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "dynamic.h"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "wildcard.h"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "inspstring.h"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "helperfuncs.h"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include "command_parse.h"</span>
+<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a> *<a class="code" href="channels_8cpp.html#Config">Config</a>;
<a name="l00055"></a>00055 <span class="keyword">extern</span> <a class="code" href="classInspIRCd.html">InspIRCd</a>* <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>;
<a name="l00056"></a>00056 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
<a name="l00057"></a>00057 <span class="keyword">extern</span> std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>;
<a name="l00058"></a>00058 <span class="keyword">extern</span> std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>;
<a name="l00059"></a>00059 <span class="keyword">extern</span> std::vector<InspSocket*> <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>;
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00062"></a>00062 <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
-<a name="l00063"></a>00063 <span class="keyword">extern</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536];
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
-<a name="l00066"></a>00066 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
-<a name="l00067"></a>00067 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#command_5Ftable">command_table</a> <a class="code" href="modules_8cpp.html#cmdlist">cmdlist</a>;
-<a name="l00068"></a><a class="code" href="modules_8cpp.html#EMode">00068</a> <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a> <a class="code" href="modules_8cpp.html#EMode">EMode</a>;
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00071"></a><a class="code" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">00071</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082
-<a name="l00083"></a><a class="code" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">00083</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>))
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">00095</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00108"></a><a class="code" href="modules_8h.html#ModeDefinedOn_28char_20c_2C_20int_20i_29">00108</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOn_28char_20modechar_2C_20int_20type_29">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> i->params_when_on;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 0;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00121"></a><a class="code" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">00121</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> i->params_when_off;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> 0;
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00134"></a><a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">00134</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 <a class="code" href="modules_8cpp.html#EMode">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="comment">// turns a mode into a listmode</span>
-<a name="l00144"></a><a class="code" href="modules_8h.html#ModeMakeList_28char_20modechar_29">00144</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 i->list = <span class="keyword">true</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="comment">// version is a simple class for holding a modules version number</span>
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">00159</a> <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
-<a name="l00162"></a>00162
-<a name="l00163"></a><a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">00163</a> <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin::Admin</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name, <a class="code" href="namespaceirc.html#string">std::string</a> email, <a class="code" href="namespaceirc.html#string">std::string</a> nick) : Name(name), Email(email), Nick(nick) { };
-<a name="l00164"></a>00164
-<a name="l00165"></a><a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">00165</a> <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { };
-<a name="l00166"></a>00166
-<a name="l00167"></a><a class="code" href="classRequest.html#GetData_28_29">00167</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">Request::GetData</a>()
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#data">data</a>;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a><a class="code" href="classRequest.html#GetSource_28_29">00172</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">Request::GetSource</a>()
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#source">source</a>;
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a><a class="code" href="classRequest.html#GetDest_28_29">00177</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">Request::GetDest</a>()
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#dest">dest</a>;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181
-<a name="l00182"></a><a class="code" href="classRequest.html#Send_28_29">00182</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Request::Send</a>()
-<a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this->dest)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#dest">dest</a>-><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<span class="keyword">this</span>);
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="keywordflow">else</span>
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> NULL;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193
-<a name="l00194"></a><a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">00194</a> <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="namespaceirc.html#string">std::string</a> eventid) : data(anydata), source(src), id(eventid) { };
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="classEvent.html#GetData_28_29">00196</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">Event::GetData</a>()
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#data">data</a>;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00201"></a><a class="code" href="classEvent.html#GetSource_28_29">00201</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">Event::GetSource</a>()
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#source">source</a>;
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00206"></a><a class="code" href="classEvent.html#Send_28_29">00206</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Event::Send</a>()
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> NULL;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00212"></a><a class="code" href="classEvent.html#GetEventID_28_29">00212</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">Event::GetEventID</a>()
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#id">id</a>;
-<a name="l00215"></a>00215 }
+<a name="l00060"></a>00060 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00061"></a>00061 <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
+<a name="l00062"></a>00062 <span class="keyword">extern</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536];
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
+<a name="l00065"></a>00065 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
+<a name="l00066"></a>00066 <span class="keyword">extern</span> <a class="code" href="ctables_8h.html#command_5Ftable">command_table</a> <a class="code" href="modules_8cpp.html#cmdlist">cmdlist</a>;
+<a name="l00067"></a><a class="code" href="modules_8cpp.html#EMode">00067</a> <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a> <a class="code" href="modules_8cpp.html#EMode">EMode</a>;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00070"></a><a class="code" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">00070</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a><a class="code" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">00082</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00094"></a><a class="code" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">00094</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00107"></a><a class="code" href="modules_8h.html#ModeDefinedOn_28char_20c_2C_20int_20i_29">00107</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOn_28char_20modechar_2C_20int_20type_29">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> i->params_when_on;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> 0;
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00120"></a><a class="code" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">00120</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> i->params_when_off;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 0;
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00133"></a><a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">00133</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off)
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 <a class="code" href="modules_8cpp.html#EMode">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="comment">// turns a mode into a listmode</span>
+<a name="l00143"></a><a class="code" href="modules_8h.html#ModeMakeList_28char_20modechar_29">00143</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
+<a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 i->list = <span class="keyword">true</span>;
+<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 <span class="keywordflow">return</span>;
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 <span class="comment">// version is a simple class for holding a modules version number</span>
+<a name="l00157"></a>00157
+<a name="l00158"></a><a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">00158</a> <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
+<a name="l00161"></a>00161
+<a name="l00162"></a><a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">00162</a> <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin::Admin</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name, <a class="code" href="namespaceirc.html#string">std::string</a> email, <a class="code" href="namespaceirc.html#string">std::string</a> nick) : Name(name), Email(email), Nick(nick) { };
+<a name="l00163"></a>00163
+<a name="l00164"></a><a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">00164</a> <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { };
+<a name="l00165"></a>00165
+<a name="l00166"></a><a class="code" href="classRequest.html#GetData_28_29">00166</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">Request::GetData</a>()
+<a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#data">data</a>;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170
+<a name="l00171"></a><a class="code" href="classRequest.html#GetSource_28_29">00171</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">Request::GetSource</a>()
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#source">source</a>;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a><a class="code" href="classRequest.html#GetDest_28_29">00176</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">Request::GetDest</a>()
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#dest">dest</a>;
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a><a class="code" href="classRequest.html#Send_28_29">00181</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Request::Send</a>()
+<a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordflow">if</span> (this->dest)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#dest">dest</a>-><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<span class="keyword">this</span>);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 <span class="keywordflow">else</span>
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> NULL;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00193"></a><a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">00193</a> <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="namespaceirc.html#string">std::string</a> eventid) : data(anydata), source(src), id(eventid) { };
+<a name="l00194"></a>00194
+<a name="l00195"></a><a class="code" href="classEvent.html#GetData_28_29">00195</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">Event::GetData</a>()
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#data">data</a>;
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199
+<a name="l00200"></a><a class="code" href="classEvent.html#GetSource_28_29">00200</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">Event::GetSource</a>()
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#source">source</a>;
+<a name="l00203"></a>00203 }
+<a name="l00204"></a>00204
+<a name="l00205"></a><a class="code" href="classEvent.html#Send_28_29">00205</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Event::Send</a>()
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
+<a name="l00208"></a>00208 <span class="keywordflow">return</span> NULL;
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210
+<a name="l00211"></a><a class="code" href="classEvent.html#GetEventID_28_29">00211</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">Event::GetEventID</a>()
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#id">id</a>;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
<a name="l00216"></a>00216
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
-<a name="l00219"></a>00219
-<a name="l00220"></a><a class="code" href="classModule.html#Module_28Server_20_2AMe_29">00220</a> <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module::Module</a>(<a class="code" href="classServer.html">Server</a>* Me) { }
-<a name="l00221"></a><a class="code" href="classModule.html#_7EModule_28_29">00221</a> <a class="code" href="classModule.html#_7EModule_28_29">Module::~Module</a>() { }
-<a name="l00222"></a><a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">00222</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00223"></a><a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00223</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message) { }
-<a name="l00224"></a><a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">00224</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00225"></a><a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00225</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00226"></a><a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00226</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00227"></a><a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">00227</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">Module::OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter) { }
-<a name="l00228"></a><a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">00228</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">Module::OnServerRaw</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00229"></a><a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">00229</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; }
-<a name="l00230"></a><a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">00230</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, <a class="code" href="modules_8h.html#string_5Flist">string_list</a> &params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
-<a name="l00231"></a><a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00231</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
-<a name="l00232"></a><a class="code" href="classModule.html#GetVersion_28_29">00232</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#GetVersion_28_29">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#VF_5FVENDOR">VF_VENDOR</a>); }
-<a name="l00233"></a><a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">00233</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype) { };
-<a name="l00234"></a><a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">00234</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00235"></a><a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">00235</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
-<a name="l00236"></a><a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00236</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
-<a name="l00237"></a><a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">00237</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text) { <span class="keywordflow">return</span> 0; };
-<a name="l00238"></a><a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">00238</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text) { <span class="keywordflow">return</span> 0; };
-<a name="l00239"></a><a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">00239</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick) { <span class="keywordflow">return</span> 0; };
-<a name="l00240"></a><a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">00240</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick) { };
-<a name="l00241"></a><a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">00241</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
-<a name="l00242"></a><a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">00242</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">Module::On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &output) { };
-<a name="l00243"></a><a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00243</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00244"></a><a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00244</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name) { };
-<a name="l00245"></a><a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00245</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">Module::OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name) { };
-<a name="l00246"></a><a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">00246</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">Module::OnBackgroundTimer</a>(time_t curtime) { };
-<a name="l00247"></a><a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">00247</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
-<a name="l00248"></a><a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00248</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Module::OnPreCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
-<a name="l00249"></a><a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">00249</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
-<a name="l00250"></a><a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">00250</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00251"></a><a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">00251</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00252"></a><a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">00252</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { };
-<a name="l00253"></a><a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">00253</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, <a class="code" href="namespaceirc.html#string">std::string</a> param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
-<a name="l00254"></a><a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00254</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00255"></a><a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">00255</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> keygiven) { <span class="keywordflow">return</span> 0; };
-<a name="l00256"></a><a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00256</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00257"></a><a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00257</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00258"></a><a class="code" href="classModule.html#OnStats_28char_20symbol_29">00258</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnStats_28char_20symbol_29">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
-<a name="l00259"></a><a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00259</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { <span class="keywordflow">return</span> 0; };
-<a name="l00260"></a><a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00260</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { <span class="keywordflow">return</span> 0; };
-<a name="l00261"></a><a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00261</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic) { <span class="keywordflow">return</span> 0; };
-<a name="l00262"></a><a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">00262</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
-<a name="l00263"></a><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">00263</a> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
-<a name="l00264"></a><a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">00264</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">Module::OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input) { <span class="keywordflow">return</span> 0; };
-<a name="l00265"></a><a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">00265</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00266"></a><a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">00266</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00267"></a><a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00267</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask) { <span class="keywordflow">return</span> 0; };
-<a name="l00268"></a><a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00268</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask) { <span class="keywordflow">return</span> 0; };
-<a name="l00269"></a><a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">00269</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, <a class="code" href="namespaceirc.html#string">std::string</a> ip, <span class="keywordtype">int</span> localport) { };
-<a name="l00270"></a><a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">00270</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; };
-<a name="l00271"></a><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">00271</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
-<a name="l00272"></a><a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">00272</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &readresult) { <span class="keywordflow">return</span> 0; };
-<a name="l00273"></a><a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00273</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
-<a name="l00274"></a><a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00274</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
-<a name="l00275"></a><a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00275</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnRemoteKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { };
-<a name="l00276"></a><a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00276</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">Module::OnUserInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { };
-<a name="l00277"></a><a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00277</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnPostLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic) { };
-<a name="l00278"></a><a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">00278</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">Module::OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &description) { };
-<a name="l00279"></a><a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00279</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
-<a name="l00280"></a><a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00280</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
-<a name="l00281"></a><a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">00281</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module::ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline) { };
-<a name="l00282"></a><a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00282</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
-<a name="l00283"></a><a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00283</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
-<a name="l00284"></a><a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00284</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
-<a name="l00285"></a><a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00285</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
-<a name="l00286"></a><a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">00286</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">Module::OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
-<a name="l00287"></a><a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00287</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { };
-<a name="l00288"></a><a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00288</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Module::OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos) { };
-<a name="l00289"></a><a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00289</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00290"></a><a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">00290</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">Module::OnAddZLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
-<a name="l00291"></a><a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00291</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddKLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00292"></a><a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">00292</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">Module::OnAddQLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
-<a name="l00293"></a><a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00293</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddELine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00294"></a><a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00294</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00295"></a><a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">00295</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">Module::OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
-<a name="l00296"></a><a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00296</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00297"></a><a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">00297</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">Module::OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
-<a name="l00298"></a><a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00298</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00299"></a><a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">00299</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">Module::OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item) { };
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <span class="comment">/* server is a wrapper class that provides methods to all of the C-style</span>
-<a name="l00302"></a>00302 <span class="comment"> * exports in the core</span>
-<a name="l00303"></a>00303 <span class="comment"> */</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="classServer.html#Server_28_29">00305</a> <a class="code" href="classServer.html#Server_28_29">Server::Server</a>()
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308
-<a name="l00309"></a><a class="code" href="classServer.html#_7EServer_28_29">00309</a> <a class="code" href="classServer.html#_7EServer_28_29">Server::~Server</a>()
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312
-<a name="l00313"></a><a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">00313</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">Server::AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock)
-<a name="l00314"></a>00314 {
-<a name="l00315"></a>00315 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317
-<a name="l00318"></a><a class="code" href="classServer.html#RehashServer_28_29">00318</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">Server::RehashServer</a>()
-<a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
-<a name="l00321"></a>00321 Config-><a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
-<a name="l00322"></a>00322 }
-<a name="l00323"></a>00323
-<a name="l00324"></a><a class="code" href="classServer.html#GetConfig_28_29">00324</a> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">Server::GetConfig</a>()
-<a name="l00325"></a>00325 {
-<a name="l00326"></a>00326 <span class="keywordflow">return</span> Config;
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328
-<a name="l00329"></a><a class="code" href="classServer.html#GetVersion_28_29">00329</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">Server::GetVersion</a>()
-<a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <span class="keywordflow">return</span> ServerInstance-><a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
-<a name="l00332"></a>00332 }
-<a name="l00333"></a>00333
-<a name="l00334"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00334</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server::DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock)
-<a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <span class="keywordflow">for</span> (std::vector<InspSocket*>::iterator a = <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.begin(); a < <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.end(); a++)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <span class="keywordflow">if</span> (*a == sock)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
-<a name="l00341"></a>00341 <span class="keywordflow">return</span>;
-<a name="l00342"></a>00342 }
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345
-<a name="l00346"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00346</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">Server::SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s)
-<a name="l00347"></a>00347 {
-<a name="l00348"></a>00348 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00349"></a>00349 }
-<a name="l00350"></a>00350
-<a name="l00351"></a><a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00351</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server::MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern)
-<a name="l00352"></a>00352 {
-<a name="l00353"></a>00353 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-<a name="l00354"></a>00354 strlcpy(literal,sliteral.c_str(),MAXBUF);
-<a name="l00355"></a>00355 strlcpy(pattern,spattern.c_str(),MAXBUF);
-<a name="l00356"></a>00356 <span class="keywordflow">return</span> match(literal,pattern);
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00359</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">Server::SendToModeMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes, <span class="keywordtype">int</span> flags, <a class="code" href="namespaceirc.html#string">std::string</a> text)
-<a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00362"></a>00362 }
-<a name="l00363"></a>00363
-<a name="l00364"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00364</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> key)
-<a name="l00365"></a>00365 {
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368
-<a name="l00369"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00369</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> reason)
-<a name="l00370"></a>00370 {
-<a name="l00371"></a>00371 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
-<a name="l00372"></a>00372 }
-<a name="l00373"></a>00373
-<a name="l00374"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00374</a> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
-<a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
-<a name="l00377"></a>00377 userl.clear();
-<a name="l00378"></a>00378 std::vector<char*> *list = chan-><a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
-<a name="l00379"></a>00379 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
-<a name="l00380"></a>00380 {
-<a name="l00381"></a>00381 <span class="keywordtype">char</span>* o = *i;
-<a name="l00382"></a>00382 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
-<a name="l00383"></a>00383 }
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> userl;
-<a name="l00385"></a>00385 }
-<a name="l00386"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00386</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname)
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 <a class="code" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
-<a name="l00389"></a>00389 }
-<a name="l00390"></a>00390
-<a name="l00391"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00391</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason)
-<a name="l00392"></a>00392 {
-<a name="l00393"></a>00393 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
-<a name="l00394"></a>00394 }
-<a name="l00395"></a>00395
-<a name="l00396"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00396</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server::IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server)
-<a name="l00397"></a>00397 {
-<a name="l00398"></a>00398 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(server.c_str());
-<a name="l00399"></a>00399 }
-<a name="l00400"></a>00400
-<a name="l00401"></a><a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00401</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::CallCommandHandler</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
-<a name="l00402"></a>00402 {
-<a name="l00403"></a>00403 <a class="code" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a>(commandname.c_str(),parameters,pcnt,user);
-<a name="l00404"></a>00404 }
-<a name="l00405"></a>00405
-<a name="l00406"></a><a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00406</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
-<a name="l00407"></a>00407 {
-<a name="l00408"></a>00408 <span class="keywordflow">return</span> <a class="code" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a>(commandname.c_str(), pcnt, user);
-<a name="l00409"></a>00409 }
-<a name="l00410"></a>00410
-<a name="l00411"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00411</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Server::Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s)
-<a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00414"></a>00414 }
-<a name="l00415"></a>00415
-<a name="l00416"></a><a class="code" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">00416</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
-<a name="l00417"></a>00417 {
-<a name="l00418"></a>00418 <a class="code" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand</a>(cmd,f,flags,minparams,source);
-<a name="l00419"></a>00419 }
-<a name="l00420"></a>00420
-<a name="l00421"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00421</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
-<a name="l00422"></a>00422 {
-<a name="l00423"></a>00423 <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(parameters,pcnt,user);
-<a name="l00424"></a>00424 }
-<a name="l00425"></a>00425
-<a name="l00426"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00426</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server::Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s)
-<a name="l00427"></a>00427 {
-<a name="l00428"></a>00428 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00429"></a>00429 }
-<a name="l00430"></a>00430
-<a name="l00431"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00431</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s)
-<a name="l00432"></a>00432 {
-<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00434"></a>00434 }
-<a name="l00435"></a>00435
-<a name="l00436"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00436</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> s)
-<a name="l00437"></a>00437 {
-<a name="l00438"></a>00438 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00439"></a>00439 }
-<a name="l00440"></a>00440
-<a name="l00441"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00441</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, <a class="code" href="namespaceirc.html#string">std::string</a> s)
-<a name="l00442"></a>00442 {
-<a name="l00443"></a>00443 <span class="keywordflow">if</span> (!Source)
-<a name="l00444"></a>00444 {
-<a name="l00445"></a>00445 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-<a name="l00446"></a>00446 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Dest-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str());
-<a name="l00447"></a>00447 }
-<a name="l00448"></a>00448 <span class="keywordflow">else</span>
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 <span class="comment">// otherwise it comes from the user specified</span>
-<a name="l00451"></a>00451 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453 }
-<a name="l00454"></a>00454
-<a name="l00455"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00455</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">Server::SendChannelServerNotice</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> text)
-<a name="l00456"></a>00456 {
-<a name="l00457"></a>00457 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
-<a name="l00458"></a>00458 }
-<a name="l00459"></a>00459
-<a name="l00460"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00460</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> s,<span class="keywordtype">bool</span> IncludeSender)
-<a name="l00461"></a>00461 {
-<a name="l00462"></a>00462 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00463"></a>00463 {
-<a name="l00464"></a>00464 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 <span class="keywordflow">else</span>
-<a name="l00467"></a>00467 {
-<a name="l00468"></a>00468 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00469"></a>00469 }
-<a name="l00470"></a>00470 }
-<a name="l00471"></a>00471
-<a name="l00472"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00472</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
-<a name="l00475"></a>00475 }
-<a name="l00476"></a>00476
-<a name="l00477"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00477</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text,<span class="keywordtype">bool</span> IncludeSender)
-<a name="l00478"></a>00478 {
-<a name="l00479"></a>00479 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00480"></a>00480 {
-<a name="l00481"></a>00481 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00482"></a>00482 }
-<a name="l00483"></a>00483 <span class="keywordflow">else</span>
-<a name="l00484"></a>00484 {
-<a name="l00485"></a>00485 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00486"></a>00486 }
-<a name="l00487"></a>00487 }
-<a name="l00488"></a>00488
-<a name="l00489"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00489</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text)
-<a name="l00490"></a>00490 {
-<a name="l00491"></a>00491 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00492"></a>00492 }
-<a name="l00493"></a>00493
-<a name="l00494"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00494</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host)
-<a name="l00495"></a>00495 {
-<a name="l00496"></a>00496 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
-<a name="l00497"></a>00497 }
-<a name="l00498"></a>00498
-<a name="l00499"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00499</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos)
-<a name="l00500"></a>00500 {
-<a name="l00501"></a>00501 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
-<a name="l00502"></a>00502 }
-<a name="l00503"></a>00503
-<a name="l00504"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00504</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server::IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick)
-<a name="l00505"></a>00505 {
-<a name="l00506"></a>00506 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
-<a name="l00507"></a>00507 }
-<a name="l00508"></a>00508
-<a name="l00509"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00509</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">Server::FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick)
-<a name="l00510"></a>00510 {
-<a name="l00511"></a>00511 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
-<a name="l00512"></a>00512 }
-<a name="l00513"></a>00513
-<a name="l00514"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00514</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
-<a name="l00515"></a>00515 {
-<a name="l00516"></a>00516 <span class="keywordflow">return</span> (socket < 65536 ? fd_ref_table[socket] : NULL);
-<a name="l00517"></a>00517 }
-<a name="l00518"></a>00518
-<a name="l00519"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00519</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">Server::FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel)
-<a name="l00520"></a>00520 {
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
-<a name="l00522"></a>00522 }
-<a name="l00523"></a>00523
-<a name="l00524"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00524</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-<a name="l00525"></a>00525 {
-<a name="l00526"></a>00526 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
-<a name="l00527"></a>00527 }
-<a name="l00528"></a>00528
-<a name="l00529"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00529</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-<a name="l00530"></a>00530 {
-<a name="l00531"></a>00531 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(User,Chan);
-<a name="l00532"></a>00532 }
-<a name="l00533"></a>00533
-<a name="l00534"></a><a class="code" href="classServer.html#GetServerName_28_29">00534</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">Server::GetServerName</a>()
-<a name="l00535"></a>00535 {
-<a name="l00536"></a>00536 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
-<a name="l00537"></a>00537 }
-<a name="l00538"></a>00538
-<a name="l00539"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00539</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">Server::GetNetworkName</a>()
-<a name="l00540"></a>00540 {
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
-<a name="l00542"></a>00542 }
-<a name="l00543"></a>00543
-<a name="l00544"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00544</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">Server::GetServerDescription</a>()
-<a name="l00545"></a>00545 {
-<a name="l00546"></a>00546 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
-<a name="l00547"></a>00547 }
-<a name="l00548"></a>00548
-<a name="l00549"></a><a class="code" href="classServer.html#GetAdmin_28_29">00549</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>()
-<a name="l00550"></a>00550 {
-<a name="l00551"></a>00551 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(Config-><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,Config-><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,Config-><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
-<a name="l00552"></a>00552 }
+<a name="l00217"></a>00217 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
+<a name="l00218"></a>00218
+<a name="l00219"></a><a class="code" href="classModule.html#Module_28Server_20_2AMe_29">00219</a> <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module::Module</a>(<a class="code" href="classServer.html">Server</a>* Me) { }
+<a name="l00220"></a><a class="code" href="classModule.html#_7EModule_28_29">00220</a> <a class="code" href="classModule.html#_7EModule_28_29">Module::~Module</a>() { }
+<a name="l00221"></a><a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">00221</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00222"></a><a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00222</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message) { }
+<a name="l00223"></a><a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">00223</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00224"></a><a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00224</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00225"></a><a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00225</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00226"></a><a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">00226</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">Module::OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter) { }
+<a name="l00227"></a><a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">00227</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">Module::OnServerRaw</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00228"></a><a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">00228</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; }
+<a name="l00229"></a><a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">00229</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, <a class="code" href="modules_8h.html#string_5Flist">string_list</a> &params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+<a name="l00230"></a><a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00230</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
+<a name="l00231"></a><a class="code" href="classModule.html#GetVersion_28_29">00231</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#GetVersion_28_29">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#VF_5FVENDOR">VF_VENDOR</a>); }
+<a name="l00232"></a><a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">00232</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype) { };
+<a name="l00233"></a><a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">00233</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00234"></a><a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">00234</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
+<a name="l00235"></a><a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00235</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
+<a name="l00236"></a><a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">00236</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text) { <span class="keywordflow">return</span> 0; };
+<a name="l00237"></a><a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">00237</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text) { <span class="keywordflow">return</span> 0; };
+<a name="l00238"></a><a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">00238</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick) { <span class="keywordflow">return</span> 0; };
+<a name="l00239"></a><a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">00239</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick) { };
+<a name="l00240"></a><a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">00240</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
+<a name="l00241"></a><a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">00241</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">Module::On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &output) { };
+<a name="l00242"></a><a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00242</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00243"></a><a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00243</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name) { };
+<a name="l00244"></a><a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00244</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">Module::OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name) { };
+<a name="l00245"></a><a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">00245</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">Module::OnBackgroundTimer</a>(time_t curtime) { };
+<a name="l00246"></a><a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">00246</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
+<a name="l00247"></a><a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00247</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Module::OnPreCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
+<a name="l00248"></a><a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">00248</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
+<a name="l00249"></a><a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">00249</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00250"></a><a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">00250</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00251"></a><a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">00251</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { };
+<a name="l00252"></a><a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">00252</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, <a class="code" href="namespaceirc.html#string">std::string</a> param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
+<a name="l00253"></a><a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00253</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00254"></a><a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">00254</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> keygiven) { <span class="keywordflow">return</span> 0; };
+<a name="l00255"></a><a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00255</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00256"></a><a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00256</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00257"></a><a class="code" href="classModule.html#OnStats_28char_20symbol_29">00257</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnStats_28char_20symbol_29">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
+<a name="l00258"></a><a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00258</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { <span class="keywordflow">return</span> 0; };
+<a name="l00259"></a><a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00259</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { <span class="keywordflow">return</span> 0; };
+<a name="l00260"></a><a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00260</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic) { <span class="keywordflow">return</span> 0; };
+<a name="l00261"></a><a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">00261</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
+<a name="l00262"></a><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">00262</a> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
+<a name="l00263"></a><a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">00263</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">Module::OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input) { <span class="keywordflow">return</span> 0; };
+<a name="l00264"></a><a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">00264</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00265"></a><a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">00265</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00266"></a><a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00266</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask) { <span class="keywordflow">return</span> 0; };
+<a name="l00267"></a><a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00267</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask) { <span class="keywordflow">return</span> 0; };
+<a name="l00268"></a><a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">00268</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, <a class="code" href="namespaceirc.html#string">std::string</a> ip, <span class="keywordtype">int</span> localport) { };
+<a name="l00269"></a><a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">00269</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; };
+<a name="l00270"></a><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">00270</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
+<a name="l00271"></a><a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">00271</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &readresult) { <span class="keywordflow">return</span> 0; };
+<a name="l00272"></a><a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00272</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
+<a name="l00273"></a><a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00273</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
+<a name="l00274"></a><a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00274</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnRemoteKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { };
+<a name="l00275"></a><a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00275</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">Module::OnUserInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { };
+<a name="l00276"></a><a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00276</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnPostLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic) { };
+<a name="l00277"></a><a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">00277</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">Module::OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &description) { };
+<a name="l00278"></a><a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00278</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
+<a name="l00279"></a><a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00279</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
+<a name="l00280"></a><a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">00280</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module::ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline) { };
+<a name="l00281"></a><a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00281</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
+<a name="l00282"></a><a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00282</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
+<a name="l00283"></a><a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00283</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
+<a name="l00284"></a><a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00284</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
+<a name="l00285"></a><a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">00285</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">Module::OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
+<a name="l00286"></a><a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00286</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { };
+<a name="l00287"></a><a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00287</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Module::OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos) { };
+<a name="l00288"></a><a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00288</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00289"></a><a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">00289</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">Module::OnAddZLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
+<a name="l00290"></a><a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00290</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddKLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00291"></a><a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">00291</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">Module::OnAddQLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
+<a name="l00292"></a><a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00292</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddELine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00293"></a><a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00293</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00294"></a><a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">00294</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">Module::OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
+<a name="l00295"></a><a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00295</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00296"></a><a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">00296</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">Module::OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
+<a name="l00297"></a><a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00297</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00298"></a><a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">00298</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">Module::OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item) { };
+<a name="l00299"></a>00299
+<a name="l00300"></a>00300 <span class="comment">/* server is a wrapper class that provides methods to all of the C-style</span>
+<a name="l00301"></a>00301 <span class="comment"> * exports in the core</span>
+<a name="l00302"></a>00302 <span class="comment"> */</span>
+<a name="l00303"></a>00303
+<a name="l00304"></a><a class="code" href="classServer.html#Server_28_29">00304</a> <a class="code" href="classServer.html#Server_28_29">Server::Server</a>()
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307
+<a name="l00308"></a><a class="code" href="classServer.html#_7EServer_28_29">00308</a> <a class="code" href="classServer.html#_7EServer_28_29">Server::~Server</a>()
+<a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 }
+<a name="l00311"></a>00311
+<a name="l00312"></a><a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">00312</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">Server::AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock)
+<a name="l00313"></a>00313 {
+<a name="l00314"></a>00314 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
+<a name="l00315"></a>00315 }
+<a name="l00316"></a>00316
+<a name="l00317"></a><a class="code" href="classServer.html#RehashServer_28_29">00317</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">Server::RehashServer</a>()
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
+<a name="l00320"></a>00320 Config-><a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322
+<a name="l00323"></a><a class="code" href="classServer.html#GetConfig_28_29">00323</a> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">Server::GetConfig</a>()
+<a name="l00324"></a>00324 {
+<a name="l00325"></a>00325 <span class="keywordflow">return</span> Config;
+<a name="l00326"></a>00326 }
+<a name="l00327"></a>00327
+<a name="l00328"></a><a class="code" href="classServer.html#GetVersion_28_29">00328</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">Server::GetVersion</a>()
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> ServerInstance-><a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
+<a name="l00331"></a>00331 }
+<a name="l00332"></a>00332
+<a name="l00333"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00333</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server::DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock)
+<a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 <span class="keywordflow">for</span> (std::vector<InspSocket*>::iterator a = <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.begin(); a < <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.end(); a++)
+<a name="l00336"></a>00336 {
+<a name="l00337"></a>00337 <span class="keywordflow">if</span> (*a == sock)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
+<a name="l00340"></a>00340 <span class="keywordflow">return</span>;
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 }
+<a name="l00344"></a>00344
+<a name="l00345"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00345</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">Server::SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s)
+<a name="l00346"></a>00346 {
+<a name="l00347"></a>00347 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00348"></a>00348 }
+<a name="l00349"></a>00349
+<a name="l00350"></a><a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00350</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server::MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern)
+<a name="l00351"></a>00351 {
+<a name="l00352"></a>00352 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+<a name="l00353"></a>00353 strlcpy(literal,sliteral.c_str(),MAXBUF);
+<a name="l00354"></a>00354 strlcpy(pattern,spattern.c_str(),MAXBUF);
+<a name="l00355"></a>00355 <span class="keywordflow">return</span> match(literal,pattern);
+<a name="l00356"></a>00356 }
+<a name="l00357"></a>00357
+<a name="l00358"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00358</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">Server::SendToModeMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes, <span class="keywordtype">int</span> flags, <a class="code" href="namespaceirc.html#string">std::string</a> text)
+<a name="l00359"></a>00359 {
+<a name="l00360"></a>00360 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00361"></a>00361 }
+<a name="l00362"></a>00362
+<a name="l00363"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00363</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> key)
+<a name="l00364"></a>00364 {
+<a name="l00365"></a>00365 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
+<a name="l00366"></a>00366 }
+<a name="l00367"></a>00367
+<a name="l00368"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00368</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> reason)
+<a name="l00369"></a>00369 {
+<a name="l00370"></a>00370 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+<a name="l00371"></a>00371 }
+<a name="l00372"></a>00372
+<a name="l00373"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00373</a> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
+<a name="l00374"></a>00374 {
+<a name="l00375"></a>00375 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
+<a name="l00376"></a>00376 userl.clear();
+<a name="l00377"></a>00377 std::vector<char*> *list = chan-><a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
+<a name="l00378"></a>00378 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
+<a name="l00379"></a>00379 {
+<a name="l00380"></a>00380 <span class="keywordtype">char</span>* o = *i;
+<a name="l00381"></a>00381 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
+<a name="l00382"></a>00382 }
+<a name="l00383"></a>00383 <span class="keywordflow">return</span> userl;
+<a name="l00384"></a>00384 }
+<a name="l00385"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00385</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname)
+<a name="l00386"></a>00386 {
+<a name="l00387"></a>00387 <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
+<a name="l00388"></a>00388 }
+<a name="l00389"></a>00389
+<a name="l00390"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00390</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason)
+<a name="l00391"></a>00391 {
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00395</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server::IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server)
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(server.c_str());
+<a name="l00398"></a>00398 }
+<a name="l00399"></a>00399
+<a name="l00400"></a><a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00400</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::CallCommandHandler</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00401"></a>00401 {
+<a name="l00402"></a>00402 ServerInstance-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CallHandler(commandname,parameters,pcnt,user);
+<a name="l00403"></a>00403 }
+<a name="l00404"></a>00404
+<a name="l00405"></a><a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00405</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00406"></a>00406 {
+<a name="l00407"></a>00407 <span class="keywordflow">return</span> ServerInstance-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->IsValidCommand(commandname, pcnt, user);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409
+<a name="l00410"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00410</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Server::Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s)
+<a name="l00411"></a>00411 {
+<a name="l00412"></a>00412 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00413"></a>00413 }
+<a name="l00414"></a>00414
+<a name="l00415"></a><a class="code" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">00415</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">Server::AddCommand</a>(<a class="code" href="classcommand__t.html">command_t</a> *f)
+<a name="l00416"></a>00416 {
+<a name="l00417"></a>00417 ServerInstance-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CreateCommand(f);
+<a name="l00418"></a>00418 }
+<a name="l00419"></a>00419
+<a name="l00420"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00420</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 ServerInstance-><a class="code" href="classInspIRCd.html#ModeGrok">ModeGrok</a>-><a class="code" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ServerMode</a>(parameters,pcnt,user);
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00425</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server::Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s)
+<a name="l00426"></a>00426 {
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429
+<a name="l00430"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00430</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s)
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00433"></a>00433 }
+<a name="l00434"></a>00434
+<a name="l00435"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00435</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> s)
+<a name="l00436"></a>00436 {
+<a name="l00437"></a>00437 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00438"></a>00438 }
+<a name="l00439"></a>00439
+<a name="l00440"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00440</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, <a class="code" href="namespaceirc.html#string">std::string</a> s)
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <span class="keywordflow">if</span> (!Source)
+<a name="l00443"></a>00443 {
+<a name="l00444"></a>00444 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+<a name="l00445"></a>00445 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Dest-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str());
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447 <span class="keywordflow">else</span>
+<a name="l00448"></a>00448 {
+<a name="l00449"></a>00449 <span class="comment">// otherwise it comes from the user specified</span>
+<a name="l00450"></a>00450 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00451"></a>00451 }
+<a name="l00452"></a>00452 }
+<a name="l00453"></a>00453
+<a name="l00454"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00454</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">Server::SendChannelServerNotice</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> text)
+<a name="l00455"></a>00455 {
+<a name="l00456"></a>00456 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
+<a name="l00457"></a>00457 }
+<a name="l00458"></a>00458
+<a name="l00459"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00459</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> s,<span class="keywordtype">bool</span> IncludeSender)
+<a name="l00460"></a>00460 {
+<a name="l00461"></a>00461 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00462"></a>00462 {
+<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465 <span class="keywordflow">else</span>
+<a name="l00466"></a>00466 {
+<a name="l00467"></a>00467 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469 }
+<a name="l00470"></a>00470
+<a name="l00471"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00471</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
+<a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
+<a name="l00474"></a>00474 }
+<a name="l00475"></a>00475
+<a name="l00476"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00476</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text,<span class="keywordtype">bool</span> IncludeSender)
+<a name="l00477"></a>00477 {
+<a name="l00478"></a>00478 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00479"></a>00479 {
+<a name="l00480"></a>00480 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00481"></a>00481 }
+<a name="l00482"></a>00482 <span class="keywordflow">else</span>
+<a name="l00483"></a>00483 {
+<a name="l00484"></a>00484 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486 }
+<a name="l00487"></a>00487
+<a name="l00488"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00488</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text)
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00491"></a>00491 }
+<a name="l00492"></a>00492
+<a name="l00493"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00493</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host)
+<a name="l00494"></a>00494 {
+<a name="l00495"></a>00495 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
+<a name="l00496"></a>00496 }
+<a name="l00497"></a>00497
+<a name="l00498"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00498</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos)
+<a name="l00499"></a>00499 {
+<a name="l00500"></a>00500 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
+<a name="l00501"></a>00501 }
+<a name="l00502"></a>00502
+<a name="l00503"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00503</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server::IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick)
+<a name="l00504"></a>00504 {
+<a name="l00505"></a>00505 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
+<a name="l00506"></a>00506 }
+<a name="l00507"></a>00507
+<a name="l00508"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00508</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">Server::FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick)
+<a name="l00509"></a>00509 {
+<a name="l00510"></a>00510 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
+<a name="l00511"></a>00511 }
+<a name="l00512"></a>00512
+<a name="l00513"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00513</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
+<a name="l00514"></a>00514 {
+<a name="l00515"></a>00515 <span class="keywordflow">return</span> (socket < 65536 ? fd_ref_table[socket] : NULL);
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517
+<a name="l00518"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00518</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">Server::FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel)
+<a name="l00519"></a>00519 {
+<a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
+<a name="l00521"></a>00521 }
+<a name="l00522"></a>00522
+<a name="l00523"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00523</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+<a name="l00524"></a>00524 {
+<a name="l00525"></a>00525 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
+<a name="l00526"></a>00526 }
+<a name="l00527"></a>00527
+<a name="l00528"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00528</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+<a name="l00529"></a>00529 {
+<a name="l00530"></a>00530 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(User,Chan);
+<a name="l00531"></a>00531 }
+<a name="l00532"></a>00532
+<a name="l00533"></a><a class="code" href="classServer.html#GetServerName_28_29">00533</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">Server::GetServerName</a>()
+<a name="l00534"></a>00534 {
+<a name="l00535"></a>00535 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
+<a name="l00536"></a>00536 }
+<a name="l00537"></a>00537
+<a name="l00538"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00538</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">Server::GetNetworkName</a>()
+<a name="l00539"></a>00539 {
+<a name="l00540"></a>00540 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00541"></a>00541 }
+<a name="l00542"></a>00542
+<a name="l00543"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00543</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">Server::GetServerDescription</a>()
+<a name="l00544"></a>00544 {
+<a name="l00545"></a>00545 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
+<a name="l00546"></a>00546 }
+<a name="l00547"></a>00547
+<a name="l00548"></a><a class="code" href="classServer.html#GetAdmin_28_29">00548</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>()
+<a name="l00549"></a>00549 {
+<a name="l00550"></a>00550 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(Config-><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,Config-><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,Config-><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552
<a name="l00553"></a>00553
<a name="l00554"></a>00554
-<a name="l00555"></a>00555
-<a name="l00556"></a><a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">00556</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off)
-<a name="l00557"></a>00557 {
-<a name="l00558"></a>00558 <span class="keywordflow">if</span> (((modechar >= <span class="charliteral">'A'</span>) && (modechar <= <span class="charliteral">'Z'</span>)) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <span class="charliteral">'z'</span>)))
-<a name="l00559"></a>00559 {
-<a name="l00560"></a>00560 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
-<a name="l00561"></a>00561 {
-<a name="l00562"></a>00562 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-<a name="l00563"></a>00563 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00564"></a>00564 }
-<a name="l00565"></a>00565 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#MT_5FCLIENT">MT_CLIENT</a>))
-<a name="l00566"></a>00566 {
-<a name="l00567"></a>00567 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-<a name="l00568"></a>00568 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00569"></a>00569 }
-<a name="l00570"></a>00570 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
-<a name="l00571"></a>00571 {
-<a name="l00572"></a>00572 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-<a name="l00573"></a>00573 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00574"></a>00574 }
-<a name="l00575"></a>00575 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-<a name="l00576"></a>00576 }
-<a name="l00577"></a>00577 <span class="keywordflow">else</span>
-<a name="l00578"></a>00578 {
-<a name="l00579"></a>00579 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
-<a name="l00580"></a>00580 }
-<a name="l00581"></a>00581 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00582"></a>00582 }
-<a name="l00583"></a>00583
-<a name="l00584"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00584</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
-<a name="l00585"></a>00585 {
-<a name="l00586"></a>00586 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
-<a name="l00587"></a>00587 <span class="keywordflow">if</span> (res)
-<a name="l00588"></a>00588 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
-<a name="l00589"></a>00589 <span class="keywordflow">return</span> res;
-<a name="l00590"></a>00590 }
-<a name="l00591"></a>00591
-<a name="l00592"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00592</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
-<a name="l00593"></a>00593 {
-<a name="l00594"></a>00594 <span class="keywordflow">return</span> usercount(c);
-<a name="l00595"></a>00595 }
+<a name="l00555"></a><a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">00555</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off)
+<a name="l00556"></a>00556 {
+<a name="l00557"></a>00557 <span class="keywordflow">if</span> (((modechar >= <span class="charliteral">'A'</span>) && (modechar <= <span class="charliteral">'Z'</span>)) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <span class="charliteral">'z'</span>)))
+<a name="l00558"></a>00558 {
+<a name="l00559"></a>00559 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+<a name="l00562"></a>00562 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00563"></a>00563 }
+<a name="l00564"></a>00564 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#MT_5FCLIENT">MT_CLIENT</a>))
+<a name="l00565"></a>00565 {
+<a name="l00566"></a>00566 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+<a name="l00567"></a>00567 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00568"></a>00568 }
+<a name="l00569"></a>00569 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
+<a name="l00570"></a>00570 {
+<a name="l00571"></a>00571 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+<a name="l00572"></a>00572 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00573"></a>00573 }
+<a name="l00574"></a>00574 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+<a name="l00575"></a>00575 }
+<a name="l00576"></a>00576 <span class="keywordflow">else</span>
+<a name="l00577"></a>00577 {
+<a name="l00578"></a>00578 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
+<a name="l00579"></a>00579 }
+<a name="l00580"></a>00580 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00581"></a>00581 }
+<a name="l00582"></a>00582
+<a name="l00583"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00583</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
+<a name="l00584"></a>00584 {
+<a name="l00585"></a>00585 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
+<a name="l00586"></a>00586 <span class="keywordflow">if</span> (res)
+<a name="l00587"></a>00587 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
+<a name="l00588"></a>00588 <span class="keywordflow">return</span> res;
+<a name="l00589"></a>00589 }
+<a name="l00590"></a>00590
+<a name="l00591"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00591</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
+<a name="l00592"></a>00592 {
+<a name="l00593"></a>00593 <span class="keywordflow">return</span> usercount(c);
+<a name="l00594"></a>00594 }
+<a name="l00595"></a>00595
<a name="l00596"></a>00596
-<a name="l00597"></a>00597
-<a name="l00598"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00598</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message)
-<a name="l00599"></a>00599 {
-<a name="l00600"></a>00600 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00601"></a>00601 user-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
-<a name="l00602"></a>00602 user-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00603"></a>00603 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,message.c_str());
-<a name="l00604"></a>00604 SE-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
-<a name="l00605"></a>00605 shutdown(old_fd,2);
-<a name="l00606"></a>00606 close(old_fd);
-<a name="l00607"></a>00607 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00608"></a>00608 }
-<a name="l00609"></a>00609
-<a name="l00610"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00610</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,<a class="code" href="namespaceirc.html#string">std::string</a> message)
-<a name="l00611"></a>00611 {
-<a name="l00612"></a>00612 zombie-><a class="code" href="classconnection.html#fd">fd</a> = alive-><a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00613"></a>00613 alive-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
-<a name="l00614"></a>00614 alive-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00615"></a>00615 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,alive-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,alive-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00616"></a>00616 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
-<a name="l00617"></a>00617 fd_ref_table[zombie-><a class="code" href="classconnection.html#fd">fd</a>] = zombie;
-<a name="l00618"></a>00618 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < zombie->chans.size(); i++)
-<a name="l00619"></a>00619 {
-<a name="l00620"></a>00620 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
-<a name="l00621"></a>00621 {
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel->name)
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
-<a name="l00625"></a>00625 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00626"></a>00626 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>)
-<a name="l00627"></a>00627 {
-<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>);
-<a name="l00629"></a>00629 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>, Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>);
-<a name="l00630"></a>00630 }
-<a name="l00631"></a>00631 userlist(zombie,Ptr);
-<a name="l00632"></a>00632 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00633"></a>00633
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635 }
-<a name="l00636"></a>00636 }
-<a name="l00637"></a>00637 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00638"></a>00638 }
-<a name="l00639"></a>00639
-<a name="l00640"></a><a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00640</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
-<a name="l00641"></a>00641 {
-<a name="l00642"></a>00642 <a class="code" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00643"></a>00643 }
-<a name="l00644"></a>00644
-<a name="l00645"></a><a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">00645</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server::AddQLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickname)
-<a name="l00646"></a>00646 {
-<a name="l00647"></a>00647 <a class="code" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline</a>(duration, source.c_str(), reason.c_str(), nickname.c_str());
-<a name="l00648"></a>00648 }
-<a name="l00649"></a>00649
-<a name="l00650"></a><a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">00650</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">Server::AddZLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipaddr)
-<a name="l00651"></a>00651 {
-<a name="l00652"></a>00652 <a class="code" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline</a>(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
-<a name="l00653"></a>00653 }
-<a name="l00654"></a>00654
-<a name="l00655"></a><a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00655</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddKLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
-<a name="l00656"></a>00656 {
-<a name="l00657"></a>00657 <a class="code" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00658"></a>00658 }
-<a name="l00659"></a>00659
-<a name="l00660"></a><a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00660</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddELine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
-<a name="l00661"></a>00661 {
-<a name="l00662"></a>00662 <a class="code" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00663"></a>00663 }
-<a name="l00664"></a>00664
-<a name="l00665"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00665</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server::DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
-<a name="l00666"></a>00666 {
-<a name="l00667"></a>00667 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline</a>(hostmask.c_str());
-<a name="l00668"></a>00668 }
-<a name="l00669"></a>00669
-<a name="l00670"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00670</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server::DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname)
-<a name="l00671"></a>00671 {
-<a name="l00672"></a>00672 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline</a>(nickname.c_str());
-<a name="l00673"></a>00673 }
-<a name="l00674"></a>00674
-<a name="l00675"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00675</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">Server::DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr)
-<a name="l00676"></a>00676 {
-<a name="l00677"></a>00677 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline</a>(ipaddr.c_str());
-<a name="l00678"></a>00678 }
-<a name="l00679"></a>00679
-<a name="l00680"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00680</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server::DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
-<a name="l00681"></a>00681 {
-<a name="l00682"></a>00682 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline</a>(hostmask.c_str());
-<a name="l00683"></a>00683 }
-<a name="l00684"></a>00684
-<a name="l00685"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00685</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server::DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
-<a name="l00686"></a>00686 {
-<a name="l00687"></a>00687 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline</a>(hostmask.c_str());
-<a name="l00688"></a>00688 }
-<a name="l00689"></a>00689
-<a name="l00690"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00690</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> delta)
-<a name="l00691"></a>00691 {
-<a name="l00692"></a>00692 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
-<a name="l00693"></a>00693 }
-<a name="l00694"></a>00694
-<a name="l00695"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00695</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server::IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask)
-<a name="l00696"></a>00696 {
-<a name="l00697"></a>00697 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
-<a name="l00698"></a>00698 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
-<a name="l00699"></a>00699 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00700"></a>00700 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
-<a name="l00701"></a>00701 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00702"></a>00702 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00703"></a>00703 <span class="keywordflow">if</span> (dest[i] < 32)
-<a name="l00704"></a>00704 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00705"></a>00705 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00706"></a>00706 <span class="keywordflow">if</span> (dest[i] > 126)
-<a name="l00707"></a>00707 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00708"></a>00708 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
-<a name="l00709"></a>00709 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00710"></a>00710 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
-<a name="l00711"></a>00711 c++;
-<a name="l00712"></a>00712 <span class="keywordflow">if</span> (c>1)
-<a name="l00713"></a>00713 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00714"></a>00714 c = 0;
-<a name="l00715"></a>00715 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
-<a name="l00716"></a>00716 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
-<a name="l00717"></a>00717 c++;
-<a name="l00718"></a>00718 <span class="keywordflow">if</span> (c>1)
-<a name="l00719"></a>00719 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00720"></a>00720
-<a name="l00721"></a>00721 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00722"></a>00722 }
-<a name="l00723"></a>00723
-<a name="l00724"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00724</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">Server::FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name)
-<a name="l00725"></a>00725 {
-<a name="l00726"></a>00726 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <= <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>; i++)
-<a name="l00727"></a>00727 {
-<a name="l00728"></a>00728 <span class="keywordflow">if</span> (Config-><a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
-<a name="l00729"></a>00729 {
-<a name="l00730"></a>00730 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
-<a name="l00731"></a>00731 }
-<a name="l00732"></a>00732 }
-<a name="l00733"></a>00733 <span class="keywordflow">return</span> NULL;
-<a name="l00734"></a>00734 }
-<a name="l00735"></a>00735
-<a name="l00736"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00736</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>()
-<a name="l00737"></a>00737 {
-<a name="l00738"></a>00738 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00739"></a>00739 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00740"></a>00740 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00741"></a>00741 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this->cache,this->errorlog);
-<a name="l00742"></a>00742 <span class="keywordflow">if</span> (!this->readerror)
-<a name="l00743"></a>00743 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
-<a name="l00744"></a>00744 }
+<a name="l00597"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00597</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message)
+<a name="l00598"></a>00598 {
+<a name="l00599"></a>00599 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00600"></a>00600 user-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
+<a name="l00601"></a>00601 user-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00602"></a>00602 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,message.c_str());
+<a name="l00603"></a>00603 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
+<a name="l00604"></a>00604 shutdown(old_fd,2);
+<a name="l00605"></a>00605 close(old_fd);
+<a name="l00606"></a>00606 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00607"></a>00607 }
+<a name="l00608"></a>00608
+<a name="l00609"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00609</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,<a class="code" href="namespaceirc.html#string">std::string</a> message)
+<a name="l00610"></a>00610 {
+<a name="l00611"></a>00611 zombie-><a class="code" href="classconnection.html#fd">fd</a> = alive-><a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00612"></a>00612 alive-><a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
+<a name="l00613"></a>00613 alive-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00614"></a>00614 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,alive-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,alive-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00615"></a>00615 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
+<a name="l00616"></a>00616 fd_ref_table[zombie-><a class="code" href="classconnection.html#fd">fd</a>] = zombie;
+<a name="l00617"></a>00617 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < zombie->chans.size(); i++)
+<a name="l00618"></a>00618 {
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
+<a name="l00620"></a>00620 {
+<a name="l00621"></a>00621 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel->name)
+<a name="l00622"></a>00622 {
+<a name="l00623"></a>00623 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
+<a name="l00624"></a>00624 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>);
+<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-><a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>, Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>);
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 userlist(zombie,Ptr);
+<a name="l00631"></a>00631 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(zombie-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-><a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 }
+<a name="l00634"></a>00634 }
+<a name="l00635"></a>00635 }
+<a name="l00636"></a>00636 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00637"></a>00637 }
+<a name="l00638"></a>00638
+<a name="l00639"></a><a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00639</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
+<a name="l00640"></a>00640 {
+<a name="l00641"></a>00641 <a class="code" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00642"></a>00642 }
+<a name="l00643"></a>00643
+<a name="l00644"></a><a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">00644</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server::AddQLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickname)
+<a name="l00645"></a>00645 {
+<a name="l00646"></a>00646 <a class="code" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline</a>(duration, source.c_str(), reason.c_str(), nickname.c_str());
+<a name="l00647"></a>00647 }
+<a name="l00648"></a>00648
+<a name="l00649"></a><a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">00649</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">Server::AddZLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipaddr)
+<a name="l00650"></a>00650 {
+<a name="l00651"></a>00651 <a class="code" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline</a>(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
+<a name="l00652"></a>00652 }
+<a name="l00653"></a>00653
+<a name="l00654"></a><a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00654</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddKLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
+<a name="l00655"></a>00655 {
+<a name="l00656"></a>00656 <a class="code" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658
+<a name="l00659"></a><a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00659</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddELine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
+<a name="l00660"></a>00660 {
+<a name="l00661"></a>00661 <a class="code" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00664</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server::DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
+<a name="l00665"></a>00665 {
+<a name="l00666"></a>00666 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline</a>(hostmask.c_str());
+<a name="l00667"></a>00667 }
+<a name="l00668"></a>00668
+<a name="l00669"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00669</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server::DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname)
+<a name="l00670"></a>00670 {
+<a name="l00671"></a>00671 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline</a>(nickname.c_str());
+<a name="l00672"></a>00672 }
+<a name="l00673"></a>00673
+<a name="l00674"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00674</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">Server::DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr)
+<a name="l00675"></a>00675 {
+<a name="l00676"></a>00676 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline</a>(ipaddr.c_str());
+<a name="l00677"></a>00677 }
+<a name="l00678"></a>00678
+<a name="l00679"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00679</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server::DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
+<a name="l00680"></a>00680 {
+<a name="l00681"></a>00681 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline</a>(hostmask.c_str());
+<a name="l00682"></a>00682 }
+<a name="l00683"></a>00683
+<a name="l00684"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00684</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server::DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
+<a name="l00685"></a>00685 {
+<a name="l00686"></a>00686 <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline</a>(hostmask.c_str());
+<a name="l00687"></a>00687 }
+<a name="l00688"></a>00688
+<a name="l00689"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00689</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> delta)
+<a name="l00690"></a>00690 {
+<a name="l00691"></a>00691 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
+<a name="l00692"></a>00692 }
+<a name="l00693"></a>00693
+<a name="l00694"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00694</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server::IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask)
+<a name="l00695"></a>00695 {
+<a name="l00696"></a>00696 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+<a name="l00697"></a>00697 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+<a name="l00698"></a>00698 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00699"></a>00699 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+<a name="l00700"></a>00700 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00701"></a>00701 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00702"></a>00702 <span class="keywordflow">if</span> (dest[i] < 32)
+<a name="l00703"></a>00703 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00704"></a>00704 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00705"></a>00705 <span class="keywordflow">if</span> (dest[i] > 126)
+<a name="l00706"></a>00706 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00707"></a>00707 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
+<a name="l00708"></a>00708 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00709"></a>00709 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+<a name="l00710"></a>00710 c++;
+<a name="l00711"></a>00711 <span class="keywordflow">if</span> (c>1)
+<a name="l00712"></a>00712 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00713"></a>00713 c = 0;
+<a name="l00714"></a>00714 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++)
+<a name="l00715"></a>00715 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+<a name="l00716"></a>00716 c++;
+<a name="l00717"></a>00717 <span class="keywordflow">if</span> (c>1)
+<a name="l00718"></a>00718 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00719"></a>00719
+<a name="l00720"></a>00720 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00721"></a>00721 }
+<a name="l00722"></a>00722
+<a name="l00723"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00723</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">Server::FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name)
+<a name="l00724"></a>00724 {
+<a name="l00725"></a>00725 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <= <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>; i++)
+<a name="l00726"></a>00726 {
+<a name="l00727"></a>00727 <span class="keywordflow">if</span> (Config-><a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
+<a name="l00728"></a>00728 {
+<a name="l00729"></a>00729 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
+<a name="l00730"></a>00730 }
+<a name="l00731"></a>00731 }
+<a name="l00732"></a>00732 <span class="keywordflow">return</span> NULL;
+<a name="l00733"></a>00733 }
+<a name="l00734"></a>00734
+<a name="l00735"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00735</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>()
+<a name="l00736"></a>00736 {
+<a name="l00737"></a>00737 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00738"></a>00738 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00739"></a>00739 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00740"></a>00740 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this->cache,this->errorlog);
+<a name="l00741"></a>00741 <span class="keywordflow">if</span> (!this->readerror)
+<a name="l00742"></a>00742 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
+<a name="l00743"></a>00743 }
+<a name="l00744"></a>00744
<a name="l00745"></a>00745
-<a name="l00746"></a>00746
-<a name="l00747"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00747</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>()
-<a name="l00748"></a>00748 {
-<a name="l00749"></a>00749 <span class="keywordflow">if</span> (this->cache)
-<a name="l00750"></a>00750 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#cache">cache</a>;
-<a name="l00751"></a>00751 <span class="keywordflow">if</span> (this->errorlog)
-<a name="l00752"></a>00752 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
-<a name="l00753"></a>00753 }
+<a name="l00746"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00746</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>()
+<a name="l00747"></a>00747 {
+<a name="l00748"></a>00748 <span class="keywordflow">if</span> (this->cache)
+<a name="l00749"></a>00749 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#cache">cache</a>;
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (this->errorlog)
+<a name="l00751"></a>00751 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
+<a name="l00752"></a>00752 }
+<a name="l00753"></a>00753
<a name="l00754"></a>00754
-<a name="l00755"></a>00755
-<a name="l00756"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00756</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
-<a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00759"></a>00759 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00760"></a>00760 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00761"></a>00761 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(filename.c_str(),this-><a class="code" href="classConfigReader.html#cache">cache</a>,this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>);
-<a name="l00762"></a>00762 <span class="keywordflow">if</span> (!this->readerror)
-<a name="l00763"></a>00763 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
-<a name="l00764"></a>00764 };
-<a name="l00765"></a>00765
-<a name="l00766"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00766</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadValue</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index)
-<a name="l00767"></a>00767 {
-<a name="l00768"></a>00768 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00769"></a>00769 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00770"></a>00770 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00771"></a>00771 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00772"></a>00772 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00773"></a>00773 <span class="keywordtype">int</span> res = Config-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00774"></a>00774 <span class="keywordflow">if</span> (!res)
-<a name="l00775"></a>00775 {
-<a name="l00776"></a>00776 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
-<a name="l00777"></a>00777 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00778"></a>00778 }
-<a name="l00779"></a>00779 <span class="keywordflow">return</span> val;
-<a name="l00780"></a>00780 }
-<a name="l00781"></a>00781
-<a name="l00782"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00782</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadFlag</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index)
-<a name="l00783"></a>00783 {
-<a name="l00784"></a>00784 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00785"></a>00785 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00786"></a>00786 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00787"></a>00787 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00788"></a>00788 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00789"></a>00789 <span class="keywordtype">int</span> res = Config-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00790"></a>00790 <span class="keywordflow">if</span> (!res)
-<a name="l00791"></a>00791 {
-<a name="l00792"></a>00792 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
-<a name="l00793"></a>00793 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00794"></a>00794 }
-<a name="l00795"></a>00795 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
-<a name="l00796"></a>00796 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
-<a name="l00797"></a>00797 }
-<a name="l00798"></a>00798
-<a name="l00799"></a><a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">00799</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ConfigReader::ReadInteger</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
-<a name="l00800"></a>00800 {
-<a name="l00801"></a>00801 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00802"></a>00802 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00803"></a>00803 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00804"></a>00804 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00805"></a>00805 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00806"></a>00806 <span class="keywordtype">int</span> res = Config-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00807"></a>00807 <span class="keywordflow">if</span> (!res)
-<a name="l00808"></a>00808 {
-<a name="l00809"></a>00809 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
-<a name="l00810"></a>00810 <span class="keywordflow">return</span> 0;
-<a name="l00811"></a>00811 }
-<a name="l00812"></a>00812 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(val); i++)
-<a name="l00813"></a>00813 {
-<a name="l00814"></a>00814 <span class="keywordflow">if</span> (!isdigit(val[i]))
-<a name="l00815"></a>00815 {
-<a name="l00816"></a>00816 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a>;
-<a name="l00817"></a>00817 <span class="keywordflow">return</span> 0;
-<a name="l00818"></a>00818 }
-<a name="l00819"></a>00819 }
-<a name="l00820"></a>00820 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0))
-<a name="l00821"></a>00821 {
-<a name="l00822"></a>00822 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a>;
-<a name="l00823"></a>00823 <span class="keywordflow">return</span> 0;
-<a name="l00824"></a>00824 }
-<a name="l00825"></a>00825 <span class="keywordflow">return</span> atoi(val);
-<a name="l00826"></a>00826 }
-<a name="l00827"></a>00827
-<a name="l00828"></a><a class="code" href="classConfigReader.html#GetError_28_29">00828</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>()
-<a name="l00829"></a>00829 {
-<a name="l00830"></a>00830 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#error">error</a>;
-<a name="l00831"></a>00831 this-><a class="code" href="classConfigReader.html#error">error</a> = 0;
-<a name="l00832"></a>00832 <span class="keywordflow">return</span> olderr;
-<a name="l00833"></a>00833 }
-<a name="l00834"></a>00834
-<a name="l00835"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00835</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
-<a name="l00836"></a>00836 {
-<a name="l00837"></a>00837 <span class="keywordflow">if</span> (bail)
-<a name="l00838"></a>00838 {
-<a name="l00839"></a>00839 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->str().c_str());
-<a name="l00840"></a>00840 exit(0);
-<a name="l00841"></a>00841 }
-<a name="l00842"></a>00842 <span class="keywordflow">else</span>
-<a name="l00843"></a>00843 {
-<a name="l00844"></a>00844 <span class="keywordtype">char</span> dataline[1024];
-<a name="l00845"></a>00845 <span class="keywordflow">if</span> (user)
-<a name="l00846"></a>00846 {
-<a name="l00847"></a>00847 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00848"></a>00848 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
-<a name="l00849"></a>00849 {
-<a name="l00850"></a>00850 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
-<a name="l00851"></a>00851 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,dataline);
-<a name="l00852"></a>00852 }
-<a name="l00853"></a>00853 }
-<a name="l00854"></a>00854 <span class="keywordflow">else</span>
-<a name="l00855"></a>00855 {
-<a name="l00856"></a>00856 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00857"></a>00857 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
-<a name="l00858"></a>00858 {
-<a name="l00859"></a>00859 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
-<a name="l00860"></a>00860 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
-<a name="l00861"></a>00861 }
-<a name="l00862"></a>00862 }
-<a name="l00863"></a>00863 <span class="keywordflow">return</span>;
-<a name="l00864"></a>00864 }
-<a name="l00865"></a>00865 }
+<a name="l00755"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00755</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
+<a name="l00756"></a>00756 {
+<a name="l00757"></a>00757 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00758"></a>00758 this-><a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00759"></a>00759 this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00760"></a>00760 this-><a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-><a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(filename.c_str(),this-><a class="code" href="classConfigReader.html#cache">cache</a>,this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>);
+<a name="l00761"></a>00761 <span class="keywordflow">if</span> (!this->readerror)
+<a name="l00762"></a>00762 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
+<a name="l00763"></a>00763 };
+<a name="l00764"></a>00764
+<a name="l00765"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00765</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadValue</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index)
+<a name="l00766"></a>00766 {
+<a name="l00767"></a>00767 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00768"></a>00768 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00769"></a>00769 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00770"></a>00770 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00771"></a>00771 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> res = Config-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00773"></a>00773 <span class="keywordflow">if</span> (!res)
+<a name="l00774"></a>00774 {
+<a name="l00775"></a>00775 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
+<a name="l00776"></a>00776 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00777"></a>00777 }
+<a name="l00778"></a>00778 <span class="keywordflow">return</span> val;
+<a name="l00779"></a>00779 }
+<a name="l00780"></a>00780
+<a name="l00781"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00781</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadFlag</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index)
+<a name="l00782"></a>00782 {
+<a name="l00783"></a>00783 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00784"></a>00784 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00785"></a>00785 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00786"></a>00786 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00787"></a>00787 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00788"></a>00788 <span class="keywordtype">int</span> res = Config-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (!res)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
+<a name="l00792"></a>00792 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00793"></a>00793 }
+<a name="l00794"></a>00794 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
+<a name="l00795"></a>00795 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
+<a name="l00796"></a>00796 }
+<a name="l00797"></a>00797
+<a name="l00798"></a><a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">00798</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ConfigReader::ReadInteger</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
+<a name="l00799"></a>00799 {
+<a name="l00800"></a>00800 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00801"></a>00801 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00802"></a>00802 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00803"></a>00803 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00804"></a>00804 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00805"></a>00805 <span class="keywordtype">int</span> res = Config-><a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00806"></a>00806 <span class="keywordflow">if</span> (!res)
+<a name="l00807"></a>00807 {
+<a name="l00808"></a>00808 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
+<a name="l00809"></a>00809 <span class="keywordflow">return</span> 0;
+<a name="l00810"></a>00810 }
+<a name="l00811"></a>00811 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(val); i++)
+<a name="l00812"></a>00812 {
+<a name="l00813"></a>00813 <span class="keywordflow">if</span> (!isdigit(val[i]))
+<a name="l00814"></a>00814 {
+<a name="l00815"></a>00815 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a>;
+<a name="l00816"></a>00816 <span class="keywordflow">return</span> 0;
+<a name="l00817"></a>00817 }
+<a name="l00818"></a>00818 }
+<a name="l00819"></a>00819 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0))
+<a name="l00820"></a>00820 {
+<a name="l00821"></a>00821 this-><a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a>;
+<a name="l00822"></a>00822 <span class="keywordflow">return</span> 0;
+<a name="l00823"></a>00823 }
+<a name="l00824"></a>00824 <span class="keywordflow">return</span> atoi(val);
+<a name="l00825"></a>00825 }
+<a name="l00826"></a>00826
+<a name="l00827"></a><a class="code" href="classConfigReader.html#GetError_28_29">00827</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>()
+<a name="l00828"></a>00828 {
+<a name="l00829"></a>00829 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#error">error</a>;
+<a name="l00830"></a>00830 this-><a class="code" href="classConfigReader.html#error">error</a> = 0;
+<a name="l00831"></a>00831 <span class="keywordflow">return</span> olderr;
+<a name="l00832"></a>00832 }
+<a name="l00833"></a>00833
+<a name="l00834"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00834</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00835"></a>00835 {
+<a name="l00836"></a>00836 <span class="keywordflow">if</span> (bail)
+<a name="l00837"></a>00837 {
+<a name="l00838"></a>00838 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->str().c_str());
+<a name="l00839"></a>00839 exit(0);
+<a name="l00840"></a>00840 }
+<a name="l00841"></a>00841 <span class="keywordflow">else</span>
+<a name="l00842"></a>00842 {
+<a name="l00843"></a>00843 <span class="keywordtype">char</span> dataline[1024];
+<a name="l00844"></a>00844 <span class="keywordflow">if</span> (user)
+<a name="l00845"></a>00845 {
+<a name="l00846"></a>00846 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00847"></a>00847 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
+<a name="l00848"></a>00848 {
+<a name="l00849"></a>00849 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
+<a name="l00850"></a>00850 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,dataline);
+<a name="l00851"></a>00851 }
+<a name="l00852"></a>00852 }
+<a name="l00853"></a>00853 <span class="keywordflow">else</span>
+<a name="l00854"></a>00854 {
+<a name="l00855"></a>00855 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00856"></a>00856 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof())
+<a name="l00857"></a>00857 {
+<a name="l00858"></a>00858 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024);
+<a name="l00859"></a>00859 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
+<a name="l00860"></a>00860 }
+<a name="l00861"></a>00861 }
+<a name="l00862"></a>00862 <span class="keywordflow">return</span>;
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864 }
+<a name="l00865"></a>00865
<a name="l00866"></a>00866
-<a name="l00867"></a>00867
-<a name="l00868"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00868</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader::Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag)
-<a name="l00869"></a>00869 {
-<a name="l00870"></a>00870 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
-<a name="l00871"></a>00871 }
-<a name="l00872"></a>00872
-<a name="l00873"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00873</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">ConfigReader::EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index)
-<a name="l00874"></a>00874 {
-<a name="l00875"></a>00875 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
-<a name="l00876"></a>00876 }
-<a name="l00877"></a>00877
-<a name="l00878"></a><a class="code" href="classConfigReader.html#Verify_28_29">00878</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>()
-<a name="l00879"></a>00879 {
-<a name="l00880"></a>00880 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#readerror">readerror</a>;
-<a name="l00881"></a>00881 }
+<a name="l00867"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00867</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader::Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag)
+<a name="l00868"></a>00868 {
+<a name="l00869"></a>00869 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
+<a name="l00870"></a>00870 }
+<a name="l00871"></a>00871
+<a name="l00872"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00872</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">ConfigReader::EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index)
+<a name="l00873"></a>00873 {
+<a name="l00874"></a>00874 <span class="keywordflow">return</span> Config-><a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
+<a name="l00875"></a>00875 }
+<a name="l00876"></a>00876
+<a name="l00877"></a><a class="code" href="classConfigReader.html#Verify_28_29">00877</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>()
+<a name="l00878"></a>00878 {
+<a name="l00879"></a>00879 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#readerror">readerror</a>;
+<a name="l00880"></a>00880 }
+<a name="l00881"></a>00881
<a name="l00882"></a>00882
-<a name="l00883"></a>00883
-<a name="l00884"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00884</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
-<a name="l00885"></a>00885 {
-<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00887"></a>00887 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00888"></a>00888 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00889"></a>00889 }
-<a name="l00890"></a>00890
-<a name="l00891"></a><a class="code" href="classFileReader.html#FileReader_28_29">00891</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>()
-<a name="l00892"></a>00892 {
-<a name="l00893"></a>00893 }
-<a name="l00894"></a>00894
-<a name="l00895"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00895</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">FileReader::LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
-<a name="l00896"></a>00896 {
-<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00898"></a>00898 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00899"></a>00899 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00900"></a>00900 }
+<a name="l00883"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00883</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
+<a name="l00884"></a>00884 {
+<a name="l00885"></a>00885 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00887"></a>00887 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00888"></a>00888 }
+<a name="l00889"></a>00889
+<a name="l00890"></a><a class="code" href="classFileReader.html#FileReader_28_29">00890</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>()
+<a name="l00891"></a>00891 {
+<a name="l00892"></a>00892 }
+<a name="l00893"></a>00893
+<a name="l00894"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00894</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">FileReader::LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
+<a name="l00895"></a>00895 {
+<a name="l00896"></a>00896 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00898"></a>00898 this-><a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00899"></a>00899 }
+<a name="l00900"></a>00900
<a name="l00901"></a>00901
-<a name="l00902"></a>00902
-<a name="l00903"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00903</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>()
-<a name="l00904"></a>00904 {
-<a name="l00905"></a>00905 }
-<a name="l00906"></a>00906
-<a name="l00907"></a><a class="code" href="classFileReader.html#Exists_28_29">00907</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>()
-<a name="l00908"></a>00908 {
-<a name="l00909"></a>00909 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
-<a name="l00910"></a>00910 {
-<a name="l00911"></a>00911 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-<a name="l00912"></a>00912 }
-<a name="l00913"></a>00913 <span class="keywordflow">else</span>
-<a name="l00914"></a>00914 {
-<a name="l00915"></a>00915 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-<a name="l00916"></a>00916 }
-<a name="l00917"></a>00917 }
-<a name="l00918"></a>00918
-<a name="l00919"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00919</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
-<a name="l00920"></a>00920 {
-<a name="l00921"></a>00921 <span class="keywordflow">if</span> ((x<0) || ((<span class="keywordtype">unsigned</span>)x><a class="code" href="classFileReader.html#fc">fc</a>.size()))
-<a name="l00922"></a>00922 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00923"></a>00923 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
-<a name="l00924"></a>00924 }
-<a name="l00925"></a>00925
-<a name="l00926"></a><a class="code" href="classFileReader.html#FileSize_28_29">00926</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>()
-<a name="l00927"></a>00927 {
-<a name="l00928"></a>00928 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
-<a name="l00929"></a>00929 }
+<a name="l00902"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00902</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>()
+<a name="l00903"></a>00903 {
+<a name="l00904"></a>00904 }
+<a name="l00905"></a>00905
+<a name="l00906"></a><a class="code" href="classFileReader.html#Exists_28_29">00906</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>()
+<a name="l00907"></a>00907 {
+<a name="l00908"></a>00908 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
+<a name="l00909"></a>00909 {
+<a name="l00910"></a>00910 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
+<a name="l00911"></a>00911 }
+<a name="l00912"></a>00912 <span class="keywordflow">else</span>
+<a name="l00913"></a>00913 {
+<a name="l00914"></a>00914 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+<a name="l00915"></a>00915 }
+<a name="l00916"></a>00916 }
+<a name="l00917"></a>00917
+<a name="l00918"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00918</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
+<a name="l00919"></a>00919 {
+<a name="l00920"></a>00920 <span class="keywordflow">if</span> ((x<0) || ((<span class="keywordtype">unsigned</span>)x><a class="code" href="classFileReader.html#fc">fc</a>.size()))
+<a name="l00921"></a>00921 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00922"></a>00922 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
+<a name="l00923"></a>00923 }
+<a name="l00924"></a>00924
+<a name="l00925"></a><a class="code" href="classFileReader.html#FileSize_28_29">00925</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>()
+<a name="l00926"></a>00926 {
+<a name="l00927"></a>00927 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
+<a name="l00928"></a>00928 }
+<a name="l00929"></a>00929
<a name="l00930"></a>00930
-<a name="l00931"></a>00931
-<a name="l00932"></a>00932 std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>(255);
-<a name="l00933"></a>00933 std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>(255);
-<a name="l00934"></a>00934
-<a name="l00935"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00935</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a> = -1;
+<a name="l00931"></a>00931 std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>(255);
+<a name="l00932"></a>00932 std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>(255);
+<a name="l00933"></a>00933
+<a name="l00934"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00934</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a> = -1;
+<a name="l00935"></a>00935
<a name="l00936"></a>00936
-<a name="l00937"></a>00937
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<h1>modules.cpp File Reference</h1><code>#include "inspircd_config.h"</code><br>
<code>#include "<a class="el" href="inspircd_8h-source.html">inspircd.h</a>"</code><br>
<code>#include "<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>"</code><br>
-<code>#include "inspircd_util.h"</code><br>
<code>#include <unistd.h></code><br>
<code>#include <sys/errno.h></code><br>
<code>#include <time.h></code><br>
<code>#include "<a class="el" href="socket_8h-source.html">socket.h</a>"</code><br>
<code>#include "<a class="el" href="socketengine_8h-source.html">socketengine.h</a>"</code><br>
<code>#include "<a class="el" href="typedefs_8h-source.html">typedefs.h</a>"</code><br>
+<code>#include "command_parse.h"</code><br>
<p>
Include dependency graph for modules.cpp:<p><center><img src="modules_8cpp__incl.gif" border="0" usemap="#modules.cpp_map" alt=""></center>
<map name="modules.cpp_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="610,799,690,826" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="742,716,838,743" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="902,970,976,996" alt="">
-<area href="users_8h-source.html" shape="rect" coords="1039,716,1103,743" alt="">
-<area href="socket_8h-source.html" shape="rect" coords="754,970,826,996" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="468,1426,543,1452" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="312,1223,395,1250" alt="">
-<area href="message_8h-source.html" shape="rect" coords="896,716,982,743" alt="">
-<area href="mode_8h-source.html" shape="rect" coords="906,412,972,439" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="908,362,970,388" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="890,311,988,338" alt="">
-<area href="hashcomp_8h-source.html" shape="rect" coords="307,1679,400,1706" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="450,970,562,996" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="163,1274,248,1300" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="305,716,385,743" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="452,666,548,692" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="627,666,701,692" alt="">
+<area href="users_8h-source.html" shape="rect" coords="772,818,836,844" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="896,1426,989,1452" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="623,1375,705,1402" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="767,1578,841,1604" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="768,1223,840,1250" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="631,1020,697,1047" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="444,412,556,439" alt="">
+<area href="message_8h-source.html" shape="rect" coords="621,615,707,642" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="633,362,695,388" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="615,919,713,946" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="163,1375,248,1402" alt="">
</map>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">factory</a> (255)</td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#SE">SE</a></td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classServerConfig.html">ServerConfig</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#Config">Config</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#ServerInstance">ServerInstance</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#chanlist">chanlist</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="ctables_8h.html#command_5Ftable">command_table</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#ExtModeList">ExtModeList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#EMode">EMode</a></td></tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00134">134</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00133">133</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00071">ModeDefined()</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00070">ModeDefined()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 <a class="code" href="modules_8cpp.html#EMode">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00141"></a>00141 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 <a class="code" href="modules_8cpp.html#EMode">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00140"></a>00140 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00071">71</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00070">70</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00081"></a>00081 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> i->params_when_off;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> 0;
-<a name="l00131"></a>00131 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> i->params_when_off;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 0;
+<a name="l00130"></a>00130 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00108">108</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00107">107</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> i->params_when_on;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 0;
-<a name="l00118"></a>00118 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> i->params_when_on;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> 0;
+<a name="l00117"></a>00117 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00095">95</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00094">94</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00083">83</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00082">82</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>))
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00093"></a>00093 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00092"></a>00092 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00144">144</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 i->list = <span class="keyword">true</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
-<a name="l00155"></a>00155 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 i->list = <span class="keyword">true</span>;
+<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 <span class="keywordflow">return</span>;
+<a name="l00154"></a>00154 }
</pre></div>
<p>
</td>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="el" href="modules_8cpp.html#clientlist">clientlist</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="el" href="users_8cpp.html#clientlist">clientlist</a> </td>
</tr>
</table>
</td>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="users_8cpp-source.html#l00743">ReHashNick()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmdlist"></a><!-- doxytag: member="modules.cpp::cmdlist" ref="cmdlist" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a> <a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="ctables_8h.html#command_5Ftable">command_table</a> <a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a> </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00068">68</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00067">67</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00071">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00121">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00108">ModeDefinedOn()</a>, <a class="el" href="modules_8cpp-source.html#l00095">ModeDefinedOper()</a>, <a class="el" href="modules_8cpp-source.html#l00083">ModeIsListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00144">ModeMakeList()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00070">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00120">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00107">ModeDefinedOn()</a>, <a class="el" href="modules_8cpp-source.html#l00094">ModeDefinedOper()</a>, <a class="el" href="modules_8cpp-source.html#l00082">ModeIsListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00143">ModeMakeList()</a>. </td>
</tr>
</table>
<a class="anchor" name="factory"></a><!-- doxytag: member="modules.cpp::factory" ref="factory" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536] </td>
</tr>
</table>
</td>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00935">935</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00934">934</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a class="anchor" name="module_5Fsockets"></a><!-- doxytag: member="modules.cpp::module_sockets" ref="module_5Fsockets" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">std::vector<<a class="el" href="classInspSocket.html">InspSocket</a>*> <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a> </td>
+ <td class="md" nowrap valign="top">std::vector<<a class="el" href="classInspSocket.html">InspSocket</a>*> <a class="el" href="users_8cpp.html#module_5Fsockets">module_sockets</a> </td>
</tr>
</table>
</td>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00313">Server::AddSocket()</a>, and <a class="el" href="modules_8cpp-source.html#l00334">Server::DelSocket()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00312">Server::AddSocket()</a>, and <a class="el" href="modules_8cpp-source.html#l00333">Server::DelSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="modules"></a><!-- doxytag: member="modules.cpp::modules" ref="modules" args="" --><p>
</td>
<td>
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="SE"></a><!-- doxytag: member="modules.cpp::SE" ref="SE" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a>* <a class="el" href="socket_8cpp.html#SE">SE</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
<p>
</td>
</tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="modules_8cpp.html#ServerInstance">ServerInstance</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a> </td>
</tr>
</table>
</td>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $inspircd_8h-source.html 610,799 690,826
-rect $inspircd__io_8h-source.html 742,716 838,743
-rect $globals_8h-source.html 902,970 976,996
-rect $users_8h-source.html 1039,716 1103,743
-rect $socket_8h-source.html 754,970 826,996
-rect $ctables_8h-source.html 468,1426 543,1452
-rect $modules_8h-source.html 312,1223 395,1250
-rect $message_8h-source.html 896,716 982,743
-rect $mode_8h-source.html 906,412 972,439
-rect $xline_8h-source.html 908,362 970,388
-rect $commands_8h-source.html 890,311 988,338
-rect $hashcomp_8h-source.html 307,1679 400,1706
-rect $socketengine_8h-source.html 450,970 562,996
-rect $typedefs_8h-source.html 163,1274 248,1300
+rect $inspircd_8h-source.html 305,716 385,743
+rect $inspircd__io_8h-source.html 452,666 548,692
+rect $globals_8h-source.html 627,666 701,692
+rect $users_8h-source.html 772,818 836,844
+rect $hashcomp_8h-source.html 896,1426 989,1452
+rect $modules_8h-source.html 623,1375 705,1402
+rect $ctables_8h-source.html 767,1578 841,1604
+rect $socket_8h-source.html 768,1223 840,1250
+rect $mode_8h-source.html 631,1020 697,1047
+rect $socketengine_8h-source.html 444,412 556,439
+rect $message_8h-source.html 621,615 707,642
+rect $xline_8h-source.html 633,362 695,388
+rect $commands_8h-source.html 615,919 713,946
+rect $typedefs_8h-source.html 163,1375 248,1402
-2384cd0922e32b841176cc7e795d3e18
\ No newline at end of file
+4e8aa95ae7fcdb9cbd30aed0c54c5b3b
\ No newline at end of file
<a name="l00062"></a>00062 <span class="preprocessor">#include <deque></span>
<a name="l00063"></a>00063 <span class="preprocessor">#include <sstream></span>
<a name="l00064"></a>00064
-<a name="l00065"></a><a class="code" href="modules_8h.html#file_5Fcache">00065</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
-<a name="l00066"></a>00066
-<a name="l00069"></a>00069 <span class="keyword">typedef</span> std::deque<std::string> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
-<a name="l00070"></a><a class="code" href="modules_8h.html#string_5Flist">00070</a> <span class="keyword">typedef</span> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="modules_8h.html#string_5Flist">string_list</a>;
-<a name="l00071"></a>00071
-<a name="l00074"></a><a class="code" href="modules_8h.html#chanuserlist">00074</a> <span class="keyword">typedef</span> std::deque<userrec*> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a>;
-<a name="l00075"></a>00075
+<a name="l00065"></a>00065 <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
+<a name="l00066"></a><a class="code" href="modules_8h.html#file_5Fcache">00066</a> <span class="keyword">class </span><a class="code" href="classServerConfig.html">ServerConfig</a>;
+<a name="l00067"></a>00067
+<a name="l00070"></a>00070 <span class="keyword">typedef</span> std::deque<std::string> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
+<a name="l00071"></a><a class="code" href="modules_8h.html#string_5Flist">00071</a> <span class="keyword">typedef</span> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="modules_8h.html#string_5Flist">string_list</a>;
+<a name="l00072"></a>00072
+<a name="l00075"></a><a class="code" href="modules_8h.html#chanuserlist">00075</a> <span class="keyword">typedef</span> std::deque<userrec*> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a>;
<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="comment">// This #define allows us to call a method in all</span>
-<a name="l00078"></a>00078 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
-<a name="l00079"></a>00079 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
-<a name="l00080"></a>00080
-<a name="l00081"></a><a class="code" href="modules_8h.html#FOREACH_5FMOD">00081</a> <span class="preprocessor">#define FOREACH_MOD for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-></span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>
-<a name="l00083"></a>00083 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
-<a name="l00084"></a>00084 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
-<a name="l00085"></a>00085 <span class="comment">// and any modules after are ignored.</span>
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="comment">// *********************************************************************************************</span>
-<a name="l00088"></a>00088
-<a name="l00089"></a><a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">00089</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
-<a name="l00090"></a>00090 <span class="preprocessor"> for (int _i = 0; _i <= MODCOUNT; _i++) { \</span>
-<a name="l00091"></a>00091 <span class="preprocessor"> int res = modules[_i]->x ; \</span>
-<a name="l00092"></a>00092 <span class="preprocessor"> if (res != 0) { \</span>
-<a name="l00093"></a>00093 <span class="preprocessor"> MOD_RESULT = res; \</span>
-<a name="l00094"></a>00094 <span class="preprocessor"> break; \</span>
-<a name="l00095"></a>00095 <span class="preprocessor"> } \</span>
-<a name="l00096"></a>00096 <span class="preprocessor"> } \</span>
-<a name="l00097"></a>00097 <span class="preprocessor"> } </span>
-<a name="l00098"></a>00098 <span class="preprocessor"></span>
-<a name="l00099"></a>00099 <span class="comment">// *********************************************************************************************</span>
-<a name="l00100"></a>00100
-<a name="l00101"></a><a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">00101</a> <span class="preprocessor">#define FD_MAGIC_NUMBER -42</span>
-<a name="l00102"></a>00102 <span class="preprocessor"></span>
-<a name="l00103"></a>00103 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand</a>(<span class="keywordtype">char</span>* cmd, <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source);
-<a name="l00104"></a>00104 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="comment">// This #define allows us to call a method in all</span>
+<a name="l00079"></a>00079 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
+<a name="l00080"></a>00080 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
+<a name="l00081"></a>00081
+<a name="l00082"></a><a class="code" href="modules_8h.html#FOREACH_5FMOD">00082</a> <span class="preprocessor">#define FOREACH_MOD for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-></span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span>
+<a name="l00084"></a>00084 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
+<a name="l00085"></a>00085 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
+<a name="l00086"></a>00086 <span class="comment">// and any modules after are ignored.</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="comment">// *********************************************************************************************</span>
+<a name="l00089"></a>00089
+<a name="l00090"></a><a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">00090</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
+<a name="l00091"></a>00091 <span class="preprocessor"> for (int _i = 0; _i <= MODCOUNT; _i++) { \</span>
+<a name="l00092"></a>00092 <span class="preprocessor"> int res = modules[_i]->x ; \</span>
+<a name="l00093"></a>00093 <span class="preprocessor"> if (res != 0) { \</span>
+<a name="l00094"></a>00094 <span class="preprocessor"> MOD_RESULT = res; \</span>
+<a name="l00095"></a>00095 <span class="preprocessor"> break; \</span>
+<a name="l00096"></a>00096 <span class="preprocessor"> } \</span>
+<a name="l00097"></a>00097 <span class="preprocessor"> } \</span>
+<a name="l00098"></a>00098 <span class="preprocessor"> } </span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span>
+<a name="l00100"></a>00100 <span class="comment">// *********************************************************************************************</span>
+<a name="l00101"></a>00101
+<a name="l00102"></a><a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">00102</a> <span class="preprocessor">#define FD_MAGIC_NUMBER -42</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00104"></a>00104 <span class="comment">// useful macros</span>
<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="comment">// class Version holds the version information of a Module, returned</span>
-<a name="l00107"></a>00107 <span class="comment">// by Module::GetVersion (thanks RD)</span>
-<a name="l00108"></a>00108
-<a name="l00113"></a><a class="code" href="classVersion.html">00113</a> <span class="keyword">class </span><a class="code" href="classVersion.html">Version</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <span class="keyword">public</span>:
-<a name="l00116"></a><a class="code" href="classVersion.html#Revision">00116</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#Major">Major</a>, <a class="code" href="classVersion.html#Minor">Minor</a>, <a class="code" href="classVersion.html#Revision">Revision</a>, <a class="code" href="classVersion.html#Build">Build</a>, <a class="code" href="classVersion.html#Flags">Flags</a>;
-<a name="l00117"></a>00117 <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags);
-<a name="l00118"></a>00118 };
-<a name="l00119"></a>00119
-<a name="l00125"></a><a class="code" href="classAdmin.html">00125</a> <span class="keyword">class </span><a class="code" href="classAdmin.html">Admin</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keyword">public</span>:
-<a name="l00128"></a><a class="code" href="classAdmin.html#Nick">00128</a> <span class="keyword">const</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classAdmin.html#Name">Name</a>, <a class="code" href="classAdmin.html#Email">Email</a>, <a class="code" href="classAdmin.html#Nick">Nick</a>;
-<a name="l00129"></a>00129 <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name, <a class="code" href="namespaceirc.html#string">std::string</a> email, <a class="code" href="namespaceirc.html#string">std::string</a> nick);
-<a name="l00130"></a>00130 };
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// Forward-delacare module for ModuleMessage etc</span>
-<a name="l00134"></a>00134 <span class="keyword">class </span><a class="code" href="classModule.html">Module</a>;
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="comment">// Thanks to Rob (from anope) for the idea of this message passing API</span>
-<a name="l00137"></a>00137 <span class="comment">// (its been done before, but this seemed a very neat and tidy way...</span>
-<a name="l00138"></a>00138
-<a name="l00143"></a><a class="code" href="classModuleMessage.html">00143</a> <span class="keyword">class </span><a class="code" href="classModuleMessage.html">ModuleMessage</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00106"></a><a class="code" href="modules_8h.html#IS_5FLOCAL_28x_29">00106</a> <span class="preprocessor">#define IS_LOCAL(x) (x->fd > -1)</span>
+<a name="l00107"></a><a class="code" href="modules_8h.html#IS_5FREMOTE_28x_29">00107</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_REMOTE(x) (x->fd < 0)</span>
+<a name="l00108"></a><a class="code" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">00108</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>
+<a name="l00110"></a>00110 <span class="comment">// flags for use with WriteMode</span>
+<a name="l00111"></a>00111
+<a name="l00112"></a><a class="code" href="modules_8h.html#WM_5FAND">00112</a> <span class="preprocessor">#define WM_AND 1</span>
+<a name="l00113"></a><a class="code" href="modules_8h.html#WM_5FOR">00113</a> <span class="preprocessor"></span><span class="preprocessor">#define WM_OR 2</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span>
+<a name="l00115"></a>00115 <span class="comment">// flags for use with OnUserPreMessage and OnUserPreNotice</span>
+<a name="l00116"></a>00116
+<a name="l00117"></a><a class="code" href="modules_8h.html#TYPE_5FUSER">00117</a> <span class="preprocessor">#define TYPE_USER 1</span>
+<a name="l00118"></a><a class="code" href="modules_8h.html#TYPE_5FCHANNEL">00118</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_CHANNEL 2</span>
+<a name="l00119"></a><a class="code" href="modules_8h.html#TYPE_5FSERVER">00119</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_SERVER 3</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span>
+<a name="l00121"></a>00121 <span class="comment">/*extern void createcommand(char* cmd, handlerfunc f, char flags, int minparams, char* source);</span>
+<a name="l00122"></a>00122 <span class="comment">extern void server_mode(char **parameters, int pcnt, userrec *user);*/</span>
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// class Version holds the version information of a Module, returned</span>
+<a name="l00125"></a>00125 <span class="comment">// by Module::GetVersion (thanks RD)</span>
+<a name="l00126"></a>00126
+<a name="l00131"></a><a class="code" href="classVersion.html">00131</a> <span class="keyword">class </span><a class="code" href="classVersion.html">Version</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">public</span>:
+<a name="l00134"></a><a class="code" href="classVersion.html#Revision">00134</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#Major">Major</a>, <a class="code" href="classVersion.html#Minor">Minor</a>, <a class="code" href="classVersion.html#Revision">Revision</a>, <a class="code" href="classVersion.html#Build">Build</a>, <a class="code" href="classVersion.html#Flags">Flags</a>;
+<a name="l00135"></a>00135 <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags);
+<a name="l00136"></a>00136 };
+<a name="l00137"></a>00137
+<a name="l00143"></a><a class="code" href="classAdmin.html">00143</a> <span class="keyword">class </span><a class="code" href="classAdmin.html">Admin</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
<a name="l00144"></a>00144 {
<a name="l00145"></a>00145 <span class="keyword">public</span>:
-<a name="l00148"></a>00148 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModuleMessage.html#Send_28_29_3D_30">Send</a>() = 0;
-<a name="l00149"></a><a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">00149</a> <span class="keyword">virtual</span> <a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>() {};
-<a name="l00150"></a>00150 };
-<a name="l00151"></a>00151
-<a name="l00157"></a><a class="code" href="classRequest.html">00157</a> <span class="keyword">class </span><a class="code" href="classRequest.html">Request</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <span class="keyword">protected</span>:
-<a name="l00162"></a><a class="code" href="classRequest.html#data">00162</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#data">data</a>;
-<a name="l00166"></a><a class="code" href="classRequest.html#source">00166</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#source">source</a>;
-<a name="l00169"></a><a class="code" href="classRequest.html#dest">00169</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#dest">dest</a>;
-<a name="l00170"></a>00170 <span class="keyword">public</span>:
-<a name="l00173"></a>00173 <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst);
-<a name="l00176"></a>00176 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">GetData</a>();
-<a name="l00179"></a>00179 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">GetSource</a>();
-<a name="l00182"></a>00182 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">GetDest</a>();
-<a name="l00188"></a>00188 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Send</a>();
-<a name="l00189"></a>00189 };
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00197"></a><a class="code" href="classEvent.html">00197</a> <span class="keyword">class </span><a class="code" href="classEvent.html">Event</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <span class="keyword">protected</span>:
-<a name="l00202"></a><a class="code" href="classEvent.html#data">00202</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#data">data</a>;
-<a name="l00206"></a><a class="code" href="classEvent.html#source">00206</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#source">source</a>;
-<a name="l00211"></a><a class="code" href="classEvent.html#id">00211</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#id">id</a>;
-<a name="l00212"></a>00212 <span class="keyword">public</span>:
-<a name="l00215"></a>00215 <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="namespaceirc.html#string">std::string</a> eventid);
-<a name="l00218"></a>00218 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">GetData</a>();
-<a name="l00221"></a>00221 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">GetSource</a>();
-<a name="l00225"></a>00225 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">GetEventID</a>();
-<a name="l00230"></a>00230 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Send</a>();
-<a name="l00231"></a>00231 };
-<a name="l00232"></a>00232
-<a name="l00236"></a><a class="code" href="classExtMode.html">00236</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="keyword">public</span>:
-<a name="l00239"></a><a class="code" href="classExtMode.html#modechar">00239</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#modechar">modechar</a>;
-<a name="l00240"></a><a class="code" href="classExtMode.html#type">00240</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#type">type</a>;
-<a name="l00241"></a><a class="code" href="classExtMode.html#needsoper">00241</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#needsoper">needsoper</a>;
-<a name="l00242"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Fon">00242</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>;
-<a name="l00243"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Foff">00243</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>;
-<a name="l00244"></a><a class="code" href="classExtMode.html#list">00244</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#list">list</a>;
-<a name="l00245"></a><a class="code" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">00245</a> <a class="code" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#modechar">modechar</a>(mc), <a class="code" href="classExtMode.html#type">type</a>(ty), <a class="code" href="classExtMode.html#needsoper">needsoper</a>(oper), <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>(p_off) { };
-<a name="l00246"></a>00246 };
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248
-<a name="l00254"></a><a class="code" href="classModule.html">00254</a> <span class="keyword">class </span><a class="code" href="classModule.html">Module</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00146"></a><a class="code" href="classAdmin.html#Nick">00146</a> <span class="keyword">const</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classAdmin.html#Name">Name</a>, <a class="code" href="classAdmin.html#Email">Email</a>, <a class="code" href="classAdmin.html#Nick">Nick</a>;
+<a name="l00147"></a>00147 <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name, <a class="code" href="namespaceirc.html#string">std::string</a> email, <a class="code" href="namespaceirc.html#string">std::string</a> nick);
+<a name="l00148"></a>00148 };
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="comment">// Forward-delacare module for ModuleMessage etc</span>
+<a name="l00152"></a>00152 <span class="keyword">class </span><a class="code" href="classModule.html">Module</a>;
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="comment">// Thanks to Rob (from anope) for the idea of this message passing API</span>
+<a name="l00155"></a>00155 <span class="comment">// (its been done before, but this seemed a very neat and tidy way...</span>
+<a name="l00156"></a>00156
+<a name="l00161"></a><a class="code" href="classModuleMessage.html">00161</a> <span class="keyword">class </span><a class="code" href="classModuleMessage.html">ModuleMessage</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keyword">public</span>:
+<a name="l00166"></a>00166 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModuleMessage.html#Send_28_29_3D_30">Send</a>() = 0;
+<a name="l00167"></a><a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">00167</a> <span class="keyword">virtual</span> <a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>() {};
+<a name="l00168"></a>00168 };
+<a name="l00169"></a>00169
+<a name="l00175"></a><a class="code" href="classRequest.html">00175</a> <span class="keyword">class </span><a class="code" href="classRequest.html">Request</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
+<a name="l00176"></a>00176 {
+<a name="l00177"></a>00177 <span class="keyword">protected</span>:
+<a name="l00180"></a><a class="code" href="classRequest.html#data">00180</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#data">data</a>;
+<a name="l00184"></a><a class="code" href="classRequest.html#source">00184</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#source">source</a>;
+<a name="l00187"></a><a class="code" href="classRequest.html#dest">00187</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#dest">dest</a>;
+<a name="l00188"></a>00188 <span class="keyword">public</span>:
+<a name="l00191"></a>00191 <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst);
+<a name="l00194"></a>00194 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">GetData</a>();
+<a name="l00197"></a>00197 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">GetSource</a>();
+<a name="l00200"></a>00200 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">GetDest</a>();
+<a name="l00206"></a>00206 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Send</a>();
+<a name="l00207"></a>00207 };
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209
+<a name="l00215"></a><a class="code" href="classEvent.html">00215</a> <span class="keyword">class </span><a class="code" href="classEvent.html">Event</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
+<a name="l00216"></a>00216 {
+<a name="l00217"></a>00217 <span class="keyword">protected</span>:
+<a name="l00220"></a><a class="code" href="classEvent.html#data">00220</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#data">data</a>;
+<a name="l00224"></a><a class="code" href="classEvent.html#source">00224</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#source">source</a>;
+<a name="l00229"></a><a class="code" href="classEvent.html#id">00229</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#id">id</a>;
+<a name="l00230"></a>00230 <span class="keyword">public</span>:
+<a name="l00233"></a>00233 <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="namespaceirc.html#string">std::string</a> eventid);
+<a name="l00236"></a>00236 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">GetData</a>();
+<a name="l00239"></a>00239 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">GetSource</a>();
+<a name="l00243"></a>00243 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">GetEventID</a>();
+<a name="l00248"></a>00248 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Send</a>();
+<a name="l00249"></a>00249 };
+<a name="l00250"></a>00250
+<a name="l00254"></a><a class="code" href="classExtMode.html">00254</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
<a name="l00255"></a>00255 {
<a name="l00256"></a>00256 <span class="keyword">public</span>:
-<a name="l00257"></a>00257
-<a name="l00262"></a>00262 <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module</a>(<a class="code" href="classServer.html">Server</a>* Me);
-<a name="l00263"></a>00263
-<a name="l00267"></a>00267 <span class="keyword">virtual</span> <a class="code" href="classModule.html#_7EModule_28_29">~Module</a>();
-<a name="l00268"></a>00268
-<a name="l00273"></a>00273 <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#GetVersion_28_29">GetVersion</a>();
-<a name="l00274"></a>00274
-<a name="l00279"></a>00279 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00280"></a>00280
-<a name="l00288"></a>00288 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message);
-<a name="l00289"></a>00289
-<a name="l00296"></a>00296 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00297"></a>00297
-<a name="l00304"></a>00304 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
-<a name="l00305"></a>00305
-<a name="l00312"></a>00312 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
-<a name="l00313"></a>00313
-<a name="l00321"></a>00321 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter);
-<a name="l00322"></a>00322
-<a name="l00334"></a>00334 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">OnServerRaw</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00335"></a>00335
-<a name="l00351"></a>00351 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, <a class="code" href="modules_8h.html#string_5Flist">string_list</a> &params);
-<a name="l00352"></a>00352
-<a name="l00369"></a>00369 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname);
+<a name="l00257"></a><a class="code" href="classExtMode.html#modechar">00257</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#modechar">modechar</a>;
+<a name="l00258"></a><a class="code" href="classExtMode.html#type">00258</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#type">type</a>;
+<a name="l00259"></a><a class="code" href="classExtMode.html#needsoper">00259</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#needsoper">needsoper</a>;
+<a name="l00260"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Fon">00260</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>;
+<a name="l00261"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Foff">00261</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>;
+<a name="l00262"></a><a class="code" href="classExtMode.html#list">00262</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#list">list</a>;
+<a name="l00263"></a><a class="code" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">00263</a> <a class="code" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#modechar">modechar</a>(mc), <a class="code" href="classExtMode.html#type">type</a>(ty), <a class="code" href="classExtMode.html#needsoper">needsoper</a>(oper), <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>(p_off) { };
+<a name="l00264"></a>00264 };
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266
+<a name="l00272"></a><a class="code" href="classModule.html">00272</a> <span class="keyword">class </span><a class="code" href="classModule.html">Module</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00273"></a>00273 {
+<a name="l00274"></a>00274 <span class="keyword">public</span>:
+<a name="l00275"></a>00275
+<a name="l00280"></a>00280 <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module</a>(<a class="code" href="classServer.html">Server</a>* Me);
+<a name="l00281"></a>00281
+<a name="l00285"></a>00285 <span class="keyword">virtual</span> <a class="code" href="classModule.html#_7EModule_28_29">~Module</a>();
+<a name="l00286"></a>00286
+<a name="l00291"></a>00291 <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#GetVersion_28_29">GetVersion</a>();
+<a name="l00292"></a>00292
+<a name="l00297"></a>00297 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00298"></a>00298
+<a name="l00306"></a>00306 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message);
+<a name="l00307"></a>00307
+<a name="l00314"></a>00314 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00315"></a>00315
+<a name="l00322"></a>00322 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
+<a name="l00323"></a>00323
+<a name="l00330"></a>00330 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
+<a name="l00331"></a>00331
+<a name="l00339"></a>00339 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter);
+<a name="l00340"></a>00340
+<a name="l00352"></a>00352 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">OnServerRaw</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00353"></a>00353
+<a name="l00369"></a>00369 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, <a class="code" href="modules_8h.html#string_5Flist">string_list</a> &params);
<a name="l00370"></a>00370
-<a name="l00381"></a>00381 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l00382"></a>00382
-<a name="l00391"></a>00391 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l00392"></a>00392
-<a name="l00399"></a>00399 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype);
-<a name="l00400"></a>00400
-<a name="l00411"></a>00411 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00412"></a>00412
-<a name="l00419"></a>00419 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
-<a name="l00420"></a>00420
-<a name="l00430"></a>00430 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel);
-<a name="l00431"></a>00431
-<a name="l00439"></a>00439 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">OnUserInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel);
-<a name="l00440"></a>00440
-<a name="l00454"></a>00454 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text);
-<a name="l00455"></a>00455
-<a name="l00472"></a>00472 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text);
-<a name="l00473"></a>00473
-<a name="l00484"></a>00484 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick);
-<a name="l00485"></a>00485
-<a name="l00494"></a>00494 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l00495"></a>00495
-<a name="l00504"></a>00504 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l00505"></a>00505
-<a name="l00515"></a>00515 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l00516"></a>00516
-<a name="l00525"></a>00525 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &description);
-<a name="l00526"></a>00526
-<a name="l00539"></a>00539 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
-<a name="l00540"></a>00540
-<a name="l00556"></a>00556 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
-<a name="l00557"></a>00557
-<a name="l00558"></a>00558 <span class="comment">/* Allows modules to syncronize metadata related to channels over the network during a netburst.</span>
-<a name="l00559"></a>00559 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
-<a name="l00560"></a>00560 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
-<a name="l00561"></a>00561 <span class="comment"> * this method is called.You should use the ProtoSendMetaData function after you've</span>
-<a name="l00562"></a>00562 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if it belongs</span>
-<a name="l00563"></a>00563 <span class="comment"> * to your module. For a good example of how to use this method, see src/modules/m_swhois.cpp.</span>
-<a name="l00564"></a>00564 <span class="comment"> * @param chan The channel whos metadata is being syncronized</span>
-<a name="l00565"></a>00565 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
-<a name="l00566"></a>00566 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
-<a name="l00567"></a>00567 <span class="comment"> * @param extname The extensions name which is being searched for</span>
-<a name="l00568"></a>00568 <span class="comment"> */</span>
-<a name="l00569"></a>00569 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
-<a name="l00570"></a>00570
-<a name="l00571"></a>00571 <span class="comment">/* Allows modules to syncronize metadata related to users over the network during a netburst.</span>
-<a name="l00572"></a>00572 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
-<a name="l00573"></a>00573 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
-<a name="l00574"></a>00574 <span class="comment"> * this method is called. You should use the ProtoSendMetaData function after you've</span>
-<a name="l00575"></a>00575 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if</span>
-<a name="l00576"></a>00576 <span class="comment"> * if it belongs to your module.</span>
-<a name="l00577"></a>00577 <span class="comment"> * @param user The user whos metadata is being syncronized</span>
-<a name="l00578"></a>00578 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
-<a name="l00579"></a>00579 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
-<a name="l00580"></a>00580 <span class="comment"> * @param extname The extensions name which is being searched for</span>
-<a name="l00581"></a>00581 <span class="comment"> */</span>
-<a name="l00582"></a>00582 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
-<a name="l00583"></a>00583
-<a name="l00591"></a>00591 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
-<a name="l00592"></a>00592
-<a name="l00606"></a>00606 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline);
-<a name="l00607"></a>00607
-<a name="l00622"></a>00622 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
-<a name="l00623"></a>00623
-<a name="l00628"></a>00628 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l00629"></a>00629
-<a name="l00635"></a>00635 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
-<a name="l00636"></a>00636
-<a name="l00642"></a>00642 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
-<a name="l00643"></a>00643
-<a name="l00651"></a>00651 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00652"></a>00652
-<a name="l00660"></a>00660 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">OnAddZLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
+<a name="l00387"></a>00387 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname);
+<a name="l00388"></a>00388
+<a name="l00399"></a>00399 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l00400"></a>00400
+<a name="l00409"></a>00409 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l00410"></a>00410
+<a name="l00417"></a>00417 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype);
+<a name="l00418"></a>00418
+<a name="l00429"></a>00429 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00430"></a>00430
+<a name="l00437"></a>00437 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
+<a name="l00438"></a>00438
+<a name="l00448"></a>00448 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel);
+<a name="l00449"></a>00449
+<a name="l00457"></a>00457 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">OnUserInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel);
+<a name="l00458"></a>00458
+<a name="l00472"></a>00472 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text);
+<a name="l00473"></a>00473
+<a name="l00490"></a>00490 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> &text);
+<a name="l00491"></a>00491
+<a name="l00502"></a>00502 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick);
+<a name="l00503"></a>00503
+<a name="l00512"></a>00512 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l00513"></a>00513
+<a name="l00522"></a>00522 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l00523"></a>00523
+<a name="l00533"></a>00533 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* dest, <span class="keywordtype">int</span> target_type, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l00534"></a>00534
+<a name="l00543"></a>00543 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &description);
+<a name="l00544"></a>00544
+<a name="l00557"></a>00557 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
+<a name="l00558"></a>00558
+<a name="l00574"></a>00574 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
+<a name="l00575"></a>00575
+<a name="l00576"></a>00576 <span class="comment">/* Allows modules to syncronize metadata related to channels over the network during a netburst.</span>
+<a name="l00577"></a>00577 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
+<a name="l00578"></a>00578 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
+<a name="l00579"></a>00579 <span class="comment"> * this method is called.You should use the ProtoSendMetaData function after you've</span>
+<a name="l00580"></a>00580 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if it belongs</span>
+<a name="l00581"></a>00581 <span class="comment"> * to your module. For a good example of how to use this method, see src/modules/m_swhois.cpp.</span>
+<a name="l00582"></a>00582 <span class="comment"> * @param chan The channel whos metadata is being syncronized</span>
+<a name="l00583"></a>00583 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
+<a name="l00584"></a>00584 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
+<a name="l00585"></a>00585 <span class="comment"> * @param extname The extensions name which is being searched for</span>
+<a name="l00586"></a>00586 <span class="comment"> */</span>
+<a name="l00587"></a>00587 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
+<a name="l00588"></a>00588
+<a name="l00589"></a>00589 <span class="comment">/* Allows modules to syncronize metadata related to users over the network during a netburst.</span>
+<a name="l00590"></a>00590 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
+<a name="l00591"></a>00591 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
+<a name="l00592"></a>00592 <span class="comment"> * this method is called. You should use the ProtoSendMetaData function after you've</span>
+<a name="l00593"></a>00593 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if</span>
+<a name="l00594"></a>00594 <span class="comment"> * if it belongs to your module.</span>
+<a name="l00595"></a>00595 <span class="comment"> * @param user The user whos metadata is being syncronized</span>
+<a name="l00596"></a>00596 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
+<a name="l00597"></a>00597 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
+<a name="l00598"></a>00598 <span class="comment"> * @param extname The extensions name which is being searched for</span>
+<a name="l00599"></a>00599 <span class="comment"> */</span>
+<a name="l00600"></a>00600 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
+<a name="l00601"></a>00601
+<a name="l00609"></a>00609 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
+<a name="l00610"></a>00610
+<a name="l00624"></a>00624 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline);
+<a name="l00625"></a>00625
+<a name="l00640"></a>00640 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
+<a name="l00641"></a>00641
+<a name="l00646"></a>00646 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l00647"></a>00647
+<a name="l00653"></a>00653 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
+<a name="l00654"></a>00654
+<a name="l00660"></a>00660 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
<a name="l00661"></a>00661
-<a name="l00669"></a>00669 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddKLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00669"></a>00669 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
<a name="l00670"></a>00670
-<a name="l00678"></a>00678 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">OnAddQLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
+<a name="l00678"></a>00678 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">OnAddZLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
<a name="l00679"></a>00679
-<a name="l00687"></a>00687 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddELine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00687"></a>00687 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddKLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
<a name="l00688"></a>00688
-<a name="l00694"></a>00694 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00695"></a>00695
-<a name="l00701"></a>00701 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
-<a name="l00702"></a>00702
-<a name="l00708"></a>00708 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00709"></a>00709
-<a name="l00715"></a>00715 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
-<a name="l00716"></a>00716
-<a name="l00722"></a>00722 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00723"></a>00723
-<a name="l00733"></a>00733 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item);
+<a name="l00696"></a>00696 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">OnAddQLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
+<a name="l00697"></a>00697
+<a name="l00705"></a>00705 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddELine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00706"></a>00706
+<a name="l00712"></a>00712 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00713"></a>00713
+<a name="l00719"></a>00719 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
+<a name="l00720"></a>00720
+<a name="l00726"></a>00726 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00727"></a>00727
+<a name="l00733"></a>00733 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
<a name="l00734"></a>00734
-<a name="l00744"></a>00744 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick);
-<a name="l00745"></a>00745
-<a name="l00771"></a>00771 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type);
-<a name="l00772"></a>00772
-<a name="l00777"></a>00777 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &output);
-<a name="l00778"></a>00778
-<a name="l00792"></a>00792 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l00793"></a>00793
-<a name="l00799"></a>00799 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">OnRemoteKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l00800"></a>00800
-<a name="l00813"></a>00813 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
-<a name="l00814"></a>00814
-<a name="l00827"></a>00827 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
-<a name="l00828"></a>00828
-<a name="l00835"></a>00835 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">OnBackgroundTimer</a>(time_t curtime);
-<a name="l00836"></a>00836
-<a name="l00847"></a>00847 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode);
-<a name="l00848"></a>00848
-<a name="l00864"></a>00864 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">OnPreCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00865"></a>00865
-<a name="l00876"></a>00876 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00877"></a>00877
-<a name="l00886"></a>00886 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00887"></a>00887
-<a name="l00900"></a>00900 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, <a class="code" href="namespaceirc.html#string">std::string</a> param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt);
-<a name="l00901"></a>00901
-<a name="l00910"></a>00910 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l00911"></a>00911
-<a name="l00921"></a>00921 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> keygiven);
-<a name="l00922"></a>00922
-<a name="l00931"></a>00931 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l00932"></a>00932
-<a name="l00941"></a>00941 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l00942"></a>00942
-<a name="l00947"></a>00947 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnStats_28char_20symbol_29">OnStats</a>(<span class="keywordtype">char</span> symbol);
-<a name="l00948"></a>00948
-<a name="l00955"></a>00955 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
-<a name="l00956"></a>00956
-<a name="l00963"></a>00963 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
-<a name="l00964"></a>00964
-<a name="l00972"></a>00972 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic);
-<a name="l00973"></a>00973
-<a name="l00980"></a>00980 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">OnPostLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic);
-<a name="l00981"></a>00981
-<a name="l00988"></a>00988 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event);
-<a name="l00989"></a>00989
-<a name="l00997"></a>00997 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request);
-<a name="l00998"></a>00998
-<a name="l01008"></a>01008 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input);
-<a name="l01009"></a>01009
-<a name="l01016"></a>01016 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01017"></a>01017
-<a name="l01023"></a>01023 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01024"></a>01024
-<a name="l01032"></a>01032 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask);
-<a name="l01033"></a>01033
-<a name="l01041"></a>01041 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask);
+<a name="l00740"></a>00740 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00741"></a>00741
+<a name="l00751"></a>00751 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item);
+<a name="l00752"></a>00752
+<a name="l00762"></a>00762 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick);
+<a name="l00763"></a>00763
+<a name="l00789"></a>00789 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type);
+<a name="l00790"></a>00790
+<a name="l00795"></a>00795 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &output);
+<a name="l00796"></a>00796
+<a name="l00810"></a>00810 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l00811"></a>00811
+<a name="l00817"></a>00817 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">OnRemoteKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l00818"></a>00818
+<a name="l00831"></a>00831 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
+<a name="l00832"></a>00832
+<a name="l00845"></a>00845 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
+<a name="l00846"></a>00846
+<a name="l00853"></a>00853 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">OnBackgroundTimer</a>(time_t curtime);
+<a name="l00854"></a>00854
+<a name="l00865"></a>00865 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode);
+<a name="l00866"></a>00866
+<a name="l00882"></a>00882 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">OnPreCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00883"></a>00883
+<a name="l00894"></a>00894 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00895"></a>00895
+<a name="l00904"></a>00904 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00905"></a>00905
+<a name="l00918"></a>00918 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, <a class="code" href="namespaceirc.html#string">std::string</a> param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt);
+<a name="l00919"></a>00919
+<a name="l00928"></a>00928 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l00929"></a>00929
+<a name="l00939"></a>00939 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> keygiven);
+<a name="l00940"></a>00940
+<a name="l00949"></a>00949 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l00950"></a>00950
+<a name="l00959"></a>00959 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l00960"></a>00960
+<a name="l00965"></a>00965 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnStats_28char_20symbol_29">OnStats</a>(<span class="keywordtype">char</span> symbol);
+<a name="l00966"></a>00966
+<a name="l00973"></a>00973 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
+<a name="l00974"></a>00974
+<a name="l00981"></a>00981 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
+<a name="l00982"></a>00982
+<a name="l00990"></a>00990 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic);
+<a name="l00991"></a>00991
+<a name="l00998"></a>00998 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">OnPostLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic);
+<a name="l00999"></a>00999
+<a name="l01006"></a>01006 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event);
+<a name="l01007"></a>01007
+<a name="l01015"></a>01015 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request);
+<a name="l01016"></a>01016
+<a name="l01026"></a>01026 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input);
+<a name="l01027"></a>01027
+<a name="l01034"></a>01034 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01035"></a>01035
+<a name="l01041"></a>01041 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
<a name="l01042"></a>01042
-<a name="l01052"></a>01052 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, <a class="code" href="namespaceirc.html#string">std::string</a> ip, <span class="keywordtype">int</span> localport);
-<a name="l01053"></a>01053
-<a name="l01064"></a>01064 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count);
-<a name="l01065"></a>01065
-<a name="l01070"></a>01070 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(<span class="keywordtype">int</span> fd);
+<a name="l01050"></a>01050 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask);
+<a name="l01051"></a>01051
+<a name="l01059"></a>01059 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask);
+<a name="l01060"></a>01060
+<a name="l01070"></a>01070 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, <a class="code" href="namespaceirc.html#string">std::string</a> ip, <span class="keywordtype">int</span> localport);
<a name="l01071"></a>01071
-<a name="l01087"></a>01087 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &readresult);
-<a name="l01088"></a>01088 };
+<a name="l01082"></a>01082 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count);
+<a name="l01083"></a>01083
+<a name="l01088"></a>01088 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(<span class="keywordtype">int</span> fd);
<a name="l01089"></a>01089
-<a name="l01090"></a>01090
-<a name="l01096"></a><a class="code" href="classServer.html">01096</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01097"></a>01097 {
-<a name="l01098"></a>01098 <span class="keyword">public</span>:
-<a name="l01102"></a>01102 <a class="code" href="classServer.html#Server_28_29">Server</a>();
-<a name="l01106"></a>01106 <span class="keyword">virtual</span> <a class="code" href="classServer.html#_7EServer_28_29">~Server</a>();
-<a name="l01111"></a>01111 <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">GetConfig</a>();
-<a name="l01115"></a>01115 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01118"></a>01118 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">GetVersion</a>();
-<a name="l01123"></a>01123 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01128"></a>01128 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01133"></a>01133 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01137"></a>01137 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">SendChannelServerNotice</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l01142"></a>01142 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01157"></a>01157 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01164"></a>01164 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> s,<span class="keywordtype">bool</span> IncludeSender);
-<a name="l01169"></a>01169 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
-<a name="l01177"></a>01177 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text,<span class="keywordtype">bool</span> IncludeSender);
-<a name="l01182"></a>01182 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l01183"></a>01183
-<a name="l01187"></a>01187 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
-<a name="l01191"></a>01191 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c);
-<a name="l01195"></a>01195 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
-<a name="l01199"></a>01199 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">FindDescriptor</a>(<span class="keywordtype">int</span> socket);
-<a name="l01203"></a>01203 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel);
-<a name="l01208"></a>01208 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
-<a name="l01212"></a>01212 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
-<a name="l01215"></a>01215 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">GetServerName</a>();
-<a name="l01218"></a>01218 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">GetNetworkName</a>();
-<a name="l01221"></a>01221 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">GetServerDescription</a>();
-<a name="l01227"></a>01227 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">GetAdmin</a>();
-<a name="l01246"></a>01246 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off);
-<a name="l01247"></a>01247
-<a name="l01269"></a>01269 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar);
-<a name="l01270"></a>01270
-<a name="l01288"></a>01288 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand</a>(<span class="keywordtype">char</span>* cmd, <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source);
-<a name="l01289"></a>01289
-<a name="l01311"></a>01311 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l01312"></a>01312
-<a name="l01325"></a>01325 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">SendToModeMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes, <span class="keywordtype">int</span> flags, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l01326"></a>01326
-<a name="l01332"></a>01332 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> key);
-<a name="l01333"></a>01333
-<a name="l01339"></a>01339 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l01340"></a>01340
-<a name="l01346"></a>01346 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname);
-<a name="l01347"></a>01347
-<a name="l01358"></a>01358 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l01359"></a>01359
-<a name="l01364"></a>01364 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern);
+<a name="l01105"></a>01105 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &readresult);
+<a name="l01106"></a>01106 };
+<a name="l01107"></a>01107
+<a name="l01108"></a>01108
+<a name="l01114"></a><a class="code" href="classServer.html">01114</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01115"></a>01115 {
+<a name="l01116"></a>01116 <span class="keyword">public</span>:
+<a name="l01120"></a>01120 <a class="code" href="classServer.html#Server_28_29">Server</a>();
+<a name="l01124"></a>01124 <span class="keyword">virtual</span> <a class="code" href="classServer.html#_7EServer_28_29">~Server</a>();
+<a name="l01129"></a>01129 <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">GetConfig</a>();
+<a name="l01133"></a>01133 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01136"></a>01136 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">GetVersion</a>();
+<a name="l01141"></a>01141 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01146"></a>01146 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01151"></a>01151 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01155"></a>01155 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">SendChannelServerNotice</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l01160"></a>01160 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01175"></a>01175 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01182"></a>01182 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> s,<span class="keywordtype">bool</span> IncludeSender);
+<a name="l01187"></a>01187 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
+<a name="l01195"></a>01195 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text,<span class="keywordtype">bool</span> IncludeSender);
+<a name="l01200"></a>01200 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l01201"></a>01201
+<a name="l01205"></a>01205 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
+<a name="l01209"></a>01209 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c);
+<a name="l01213"></a>01213 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
+<a name="l01217"></a>01217 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">FindDescriptor</a>(<span class="keywordtype">int</span> socket);
+<a name="l01221"></a>01221 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel);
+<a name="l01226"></a>01226 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
+<a name="l01230"></a>01230 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
+<a name="l01233"></a>01233 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">GetServerName</a>();
+<a name="l01236"></a>01236 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">GetNetworkName</a>();
+<a name="l01239"></a>01239 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">GetServerDescription</a>();
+<a name="l01245"></a>01245 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">GetAdmin</a>();
+<a name="l01264"></a>01264 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off);
+<a name="l01265"></a>01265
+<a name="l01287"></a>01287 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar);
+<a name="l01288"></a>01288
+<a name="l01306"></a>01306 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand</a>(<a class="code" href="classcommand__t.html">command_t</a> *f);
+<a name="l01307"></a>01307
+<a name="l01329"></a>01329 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l01330"></a>01330
+<a name="l01343"></a>01343 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">SendToModeMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes, <span class="keywordtype">int</span> flags, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l01344"></a>01344
+<a name="l01350"></a>01350 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> key);
+<a name="l01351"></a>01351
+<a name="l01357"></a>01357 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l01358"></a>01358
+<a name="l01364"></a>01364 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname);
<a name="l01365"></a>01365
-<a name="l01377"></a>01377 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">CallCommandHandler</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01378"></a>01378
-<a name="l01379"></a>01379 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01380"></a>01380
-<a name="l01386"></a>01386 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host);
-<a name="l01387"></a>01387
-<a name="l01393"></a>01393 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
-<a name="l01394"></a>01394
-<a name="l01403"></a>01403 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server);
-<a name="l01404"></a>01404
-<a name="l01408"></a>01408 <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l01409"></a>01409
-<a name="l01416"></a>01416 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message);
-<a name="l01417"></a>01417
-<a name="l01424"></a>01424 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,<a class="code" href="namespaceirc.html#string">std::string</a> message);
-<a name="l01425"></a>01425
-<a name="l01433"></a>01433 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01434"></a>01434
-<a name="l01442"></a>01442 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">AddQLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickname);
+<a name="l01376"></a>01376 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l01377"></a>01377
+<a name="l01382"></a>01382 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern);
+<a name="l01383"></a>01383
+<a name="l01395"></a>01395 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">CallCommandHandler</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01396"></a>01396
+<a name="l01397"></a>01397 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01398"></a>01398
+<a name="l01404"></a>01404 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host);
+<a name="l01405"></a>01405
+<a name="l01411"></a>01411 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
+<a name="l01412"></a>01412
+<a name="l01421"></a>01421 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server);
+<a name="l01422"></a>01422
+<a name="l01426"></a>01426 <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l01427"></a>01427
+<a name="l01434"></a>01434 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message);
+<a name="l01435"></a>01435
+<a name="l01442"></a>01442 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,<a class="code" href="namespaceirc.html#string">std::string</a> message);
<a name="l01443"></a>01443
-<a name="l01451"></a>01451 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">AddZLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipaddr);
+<a name="l01451"></a>01451 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
<a name="l01452"></a>01452
-<a name="l01460"></a>01460 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddKLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01460"></a>01460 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">AddQLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickname);
<a name="l01461"></a>01461
-<a name="l01469"></a>01469 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddELine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01469"></a>01469 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">AddZLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipaddr);
<a name="l01470"></a>01470
-<a name="l01473"></a>01473 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01474"></a>01474
-<a name="l01477"></a>01477 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname);
-<a name="l01478"></a>01478
-<a name="l01481"></a>01481 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr);
-<a name="l01482"></a>01482
-<a name="l01485"></a>01485 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01486"></a>01486
-<a name="l01489"></a>01489 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01490"></a>01490
-<a name="l01496"></a>01496 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> duration);
-<a name="l01497"></a>01497
-<a name="l01500"></a>01500 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask);
-<a name="l01501"></a>01501
-<a name="l01506"></a>01506 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name);
-<a name="l01507"></a>01507
-<a name="l01510"></a>01510 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
-<a name="l01511"></a>01511
-<a name="l01514"></a>01514 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
+<a name="l01478"></a>01478 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddKLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01479"></a>01479
+<a name="l01487"></a>01487 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddELine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01488"></a>01488
+<a name="l01491"></a>01491 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01492"></a>01492
+<a name="l01495"></a>01495 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname);
+<a name="l01496"></a>01496
+<a name="l01499"></a>01499 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr);
+<a name="l01500"></a>01500
+<a name="l01503"></a>01503 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01504"></a>01504
+<a name="l01507"></a>01507 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01508"></a>01508
+<a name="l01514"></a>01514 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> duration);
<a name="l01515"></a>01515
-<a name="l01516"></a>01516 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">RehashServer</a>();
-<a name="l01517"></a>01517 };
-<a name="l01518"></a>01518
+<a name="l01518"></a>01518 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask);
<a name="l01519"></a>01519
-<a name="l01520"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">01520</a> <span class="preprocessor">#define CONF_NOT_A_NUMBER 0x000010</span>
-<a name="l01521"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">01521</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_NOT_UNSIGNED 0x000080</span>
-<a name="l01522"></a><a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">01522</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_VALUE_NOT_FOUND 0x000100</span>
-<a name="l01523"></a><a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">01523</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_FILE_NOT_FOUND 0x000200</span>
-<a name="l01524"></a>01524 <span class="preprocessor"></span>
+<a name="l01524"></a>01524 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name);
<a name="l01525"></a>01525
-<a name="l01532"></a><a class="code" href="classConfigReader.html">01532</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01533"></a>01533 {
-<a name="l01534"></a>01534 <span class="keyword">protected</span>:
-<a name="l01540"></a><a class="code" href="classConfigReader.html#cache">01540</a> std::stringstream *<a class="code" href="classConfigReader.html#cache">cache</a>;
-<a name="l01541"></a><a class="code" href="classConfigReader.html#errorlog">01541</a> std::stringstream *<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
-<a name="l01544"></a><a class="code" href="classConfigReader.html#readerror">01544</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#readerror">readerror</a>;
-<a name="l01545"></a><a class="code" href="classConfigReader.html#error">01545</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#error">error</a>;
-<a name="l01546"></a>01546
-<a name="l01547"></a>01547 <span class="keyword">public</span>:
-<a name="l01552"></a>01552 <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
-<a name="l01556"></a>01556 <span class="comment"></span> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename); <span class="comment">// read a module-specific config</span>
-<a name="l01560"></a>01560 <span class="comment"></span> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">~ConfigReader</a>();
-<a name="l01565"></a>01565 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ReadValue</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index);
-<a name="l01571"></a>01571 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ReadFlag</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index);
-<a name="l01580"></a>01580 <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ReadInteger</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned);
-<a name="l01585"></a>01585 <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">GetError</a>();
-<a name="l01592"></a>01592 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag);
-<a name="l01597"></a>01597 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">Verify</a>();
-<a name="l01604"></a>01604 <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">DumpErrors</a>(<span class="keywordtype">bool</span> bail,<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01605"></a>01605
-<a name="l01611"></a>01611 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index);
-<a name="l01612"></a>01612 };
-<a name="l01613"></a>01613
-<a name="l01614"></a>01614
-<a name="l01615"></a>01615
-<a name="l01621"></a><a class="code" href="classFileReader.html">01621</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01622"></a>01622 {
-<a name="l01623"></a><a class="code" href="classFileReader.html#fc">01623</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classFileReader.html#fc">fc</a>;
-<a name="l01624"></a>01624 <span class="keyword">public</span>:
-<a name="l01629"></a>01629 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>();
-<a name="l01630"></a>01630
-<a name="l01636"></a>01636 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l01637"></a>01637
-<a name="l01641"></a>01641 <a class="code" href="classFileReader.html#_7EFileReader_28_29">~FileReader</a>();
-<a name="l01642"></a>01642
-<a name="l01648"></a>01648 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l01649"></a>01649
-<a name="l01653"></a>01653 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">Exists</a>();
-<a name="l01654"></a>01654
-<a name="l01659"></a>01659 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">GetLine</a>(<span class="keywordtype">int</span> x);
+<a name="l01528"></a>01528 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
+<a name="l01529"></a>01529
+<a name="l01532"></a>01532 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
+<a name="l01533"></a>01533
+<a name="l01534"></a>01534 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">RehashServer</a>();
+<a name="l01535"></a>01535 };
+<a name="l01536"></a>01536
+<a name="l01537"></a>01537
+<a name="l01538"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">01538</a> <span class="preprocessor">#define CONF_NOT_A_NUMBER 0x000010</span>
+<a name="l01539"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">01539</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_NOT_UNSIGNED 0x000080</span>
+<a name="l01540"></a><a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">01540</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_VALUE_NOT_FOUND 0x000100</span>
+<a name="l01541"></a><a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">01541</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_FILE_NOT_FOUND 0x000200</span>
+<a name="l01542"></a>01542 <span class="preprocessor"></span>
+<a name="l01543"></a>01543
+<a name="l01550"></a><a class="code" href="classConfigReader.html">01550</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01551"></a>01551 {
+<a name="l01552"></a>01552 <span class="keyword">protected</span>:
+<a name="l01558"></a><a class="code" href="classConfigReader.html#cache">01558</a> std::stringstream *<a class="code" href="classConfigReader.html#cache">cache</a>;
+<a name="l01559"></a><a class="code" href="classConfigReader.html#errorlog">01559</a> std::stringstream *<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
+<a name="l01562"></a><a class="code" href="classConfigReader.html#readerror">01562</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#readerror">readerror</a>;
+<a name="l01563"></a><a class="code" href="classConfigReader.html#error">01563</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#error">error</a>;
+<a name="l01564"></a>01564
+<a name="l01565"></a>01565 <span class="keyword">public</span>:
+<a name="l01570"></a>01570 <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
+<a name="l01574"></a>01574 <span class="comment"></span> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename); <span class="comment">// read a module-specific config</span>
+<a name="l01578"></a>01578 <span class="comment"></span> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">~ConfigReader</a>();
+<a name="l01583"></a>01583 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ReadValue</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index);
+<a name="l01589"></a>01589 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ReadFlag</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index);
+<a name="l01598"></a>01598 <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ReadInteger</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned);
+<a name="l01603"></a>01603 <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">GetError</a>();
+<a name="l01610"></a>01610 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag);
+<a name="l01615"></a>01615 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">Verify</a>();
+<a name="l01622"></a>01622 <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">DumpErrors</a>(<span class="keywordtype">bool</span> bail,<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01623"></a>01623
+<a name="l01629"></a>01629 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index);
+<a name="l01630"></a>01630 };
+<a name="l01631"></a>01631
+<a name="l01632"></a>01632
+<a name="l01633"></a>01633
+<a name="l01639"></a><a class="code" href="classFileReader.html">01639</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01640"></a>01640 {
+<a name="l01641"></a><a class="code" href="classFileReader.html#fc">01641</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classFileReader.html#fc">fc</a>;
+<a name="l01642"></a>01642 <span class="keyword">public</span>:
+<a name="l01647"></a>01647 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>();
+<a name="l01648"></a>01648
+<a name="l01654"></a>01654 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l01655"></a>01655
+<a name="l01659"></a>01659 <a class="code" href="classFileReader.html#_7EFileReader_28_29">~FileReader</a>();
<a name="l01660"></a>01660
-<a name="l01666"></a>01666 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileSize</a>();
-<a name="l01667"></a>01667 };
-<a name="l01668"></a>01668
-<a name="l01669"></a>01669
-<a name="l01676"></a><a class="code" href="classModuleFactory.html">01676</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01677"></a>01677 {
-<a name="l01678"></a>01678 <span class="keyword">public</span>:
-<a name="l01679"></a><a class="code" href="classModuleFactory.html#ModuleFactory_28_29">01679</a> <a class="code" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a>() { }
-<a name="l01680"></a><a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">01680</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">~ModuleFactory</a>() { }
-<a name="l01685"></a>01685 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#CreateModule_28Server_20_2AMe_29_3D_30">CreateModule</a>(<a class="code" href="classServer.html">Server</a>* Me) = 0;
-<a name="l01686"></a>01686 };
+<a name="l01666"></a>01666 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l01667"></a>01667
+<a name="l01671"></a>01671 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">Exists</a>();
+<a name="l01672"></a>01672
+<a name="l01677"></a>01677 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">GetLine</a>(<span class="keywordtype">int</span> x);
+<a name="l01678"></a>01678
+<a name="l01684"></a>01684 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileSize</a>();
+<a name="l01685"></a>01685 };
+<a name="l01686"></a>01686
<a name="l01687"></a>01687
-<a name="l01688"></a>01688
-<a name="l01689"></a><a class="code" href="modules_8h.html#ircd_5Fmodule">01689</a> <span class="keyword">typedef</span> DLLFactory<ModuleFactory> <a class="code" href="modules_8h.html#ircd_5Fmodule">ircd_module</a>;
-<a name="l01690"></a>01690
-<a name="l01691"></a>01691 <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
-<a name="l01692"></a>01692 <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">ModeDefinedOper</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
-<a name="l01693"></a>01693 <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOn_28char_20modechar_2C_20int_20type_29">ModeDefinedOn</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
-<a name="l01694"></a>01694 <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">ModeDefinedOff</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
-<a name="l01695"></a>01695 <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar);
-<a name="l01696"></a>01696 <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type);
-<a name="l01697"></a>01697
-<a name="l01698"></a>01698 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l01694"></a><a class="code" href="classModuleFactory.html">01694</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01695"></a>01695 {
+<a name="l01696"></a>01696 <span class="keyword">public</span>:
+<a name="l01697"></a><a class="code" href="classModuleFactory.html#ModuleFactory_28_29">01697</a> <a class="code" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a>() { }
+<a name="l01698"></a><a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">01698</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">~ModuleFactory</a>() { }
+<a name="l01703"></a>01703 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#CreateModule_28Server_20_2AMe_29_3D_30">CreateModule</a>(<a class="code" href="classServer.html">Server</a>* Me) = 0;
+<a name="l01704"></a>01704 };
+<a name="l01705"></a>01705
+<a name="l01706"></a>01706
+<a name="l01707"></a><a class="code" href="modules_8h.html#ircd_5Fmodule">01707</a> <span class="keyword">typedef</span> DLLFactory<ModuleFactory> <a class="code" href="modules_8h.html#ircd_5Fmodule">ircd_module</a>;
+<a name="l01708"></a>01708
+<a name="l01709"></a>01709 <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
+<a name="l01710"></a>01710 <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">ModeDefinedOper</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
+<a name="l01711"></a>01711 <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOn_28char_20modechar_2C_20int_20type_29">ModeDefinedOn</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
+<a name="l01712"></a>01712 <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">ModeDefinedOff</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
+<a name="l01713"></a>01713 <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar);
+<a name="l01714"></a>01714 <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type);
+<a name="l01715"></a>01715
+<a name="l01716"></a>01716 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Include dependency graph for modules.h:<p><center><img src="modules_8h__incl.gif" border="0" usemap="#modules.h_map" alt=""></center>
<map name="modules.h_map">
-<area href="base_8h-source.html" shape="rect" coords="283,108,344,135" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="145,209,220,236" alt="">
-<area href="socket_8h-source.html" shape="rect" coords="427,361,499,388" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="273,209,353,236" alt="">
+<area href="base_8h-source.html" shape="rect" coords="152,159,214,185" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="146,108,220,135" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="147,336,219,363" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="modules_8h__dep__incl.gif" border="0" usemap="#modules.hdep_map" alt=""></center>
<map name="modules.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="275,32,373,59" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="275,95,373,121" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="140,57,225,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="288,57,387,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="288,108,387,135" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="142,57,238,84" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="147,108,232,135" alt="">
</map>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#VF_5FCOMMON">VF_COMMON</a> 8</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> for (int _i = 0; _i <= <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> for (int _i = 0; _i <= <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(x)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a> -42</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#IS_5FLOCAL_28x_29">IS_LOCAL</a>(x) (x->fd > -1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#IS_5FREMOTE_28x_29">IS_REMOTE</a>(x) (x->fd < 0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">IS_MODULE_CREATED</a>(x) (x->fd == FD_MAGIC_NUMBER)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#WM_5FAND">WM_AND</a> 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#WM_5FOR">WM_OR</a> 2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#TYPE_5FUSER">TYPE_USER</a> 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#TYPE_5FCHANNEL">TYPE_CHANNEL</a> 2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#TYPE_5FSERVER">TYPE_SERVER</a> 3</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a> 0x000010</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a> 0x000080</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef DLLFactory< <a class="el" href="classModuleFactory.html">ModuleFactory</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand</a> (char *cmd, <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, char flags, int minparams, char *source)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">ModeDefined</a> (char c, int i)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">ModeDefinedOper</a> (char c, int i)</td></tr>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00037">37</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00241">Module::OnAccessCheck()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00240">Module::OnAccessCheck()</a>. </td>
</tr>
</table>
<a class="anchor" name="ACR_5FDENY"></a><!-- doxytag: member="modules.h::ACR_DENY" ref="ACR_5FDENY" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01523">1523</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01541">1541</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader::ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader::ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="CONF_5FNOT_5FA_5FNUMBER"></a><!-- doxytag: member="modules.h::CONF_NOT_A_NUMBER" ref="CONF_5FNOT_5FA_5FNUMBER" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01520">1520</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01538">1538</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>. </td>
</tr>
</table>
<a class="anchor" name="CONF_5FNOT_5FUNSIGNED"></a><!-- doxytag: member="modules.h::CONF_NOT_UNSIGNED" ref="CONF_5FNOT_5FUNSIGNED" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01521">1521</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01539">1539</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>. </td>
</tr>
</table>
<a class="anchor" name="CONF_5FVALUE_5FNOT_5FFOUND"></a><!-- doxytag: member="modules.h::CONF_VALUE_NOT_FOUND" ref="CONF_5FVALUE_5FNOT_5FFOUND" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01522">1522</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01540">1540</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00782">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00766">ConfigReader::ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00781">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00765">ConfigReader::ReadValue()</a>. </td>
</tr>
</table>
<a class="anchor" name="DEBUG"></a><!-- doxytag: member="modules.h::DEBUG" ref="DEBUG" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00101">101</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00102">102</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="FOREACH_5FMOD"></a><!-- doxytag: member="modules.h::FOREACH_MOD" ref="FOREACH_5FMOD" args="" --><p>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">#define FOREACH_MOD for (int _i = 0; _i <= <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-> </td>
+ <td class="md" nowrap valign="top">#define FOREACH_MOD for (int _i = 0; _i <= <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-> </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00081">81</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00082">82</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00206">Event::Send()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="modules_8cpp-source.html#l00205">Event::Send()</a>. </td>
</tr>
</table>
<a class="anchor" name="FOREACH_5FRESULT_28x_29"></a><!-- doxytag: member="modules.h::FOREACH_RESULT" ref="FOREACH_5FRESULT_28x_29" args="(x)" --><p>
}
</pre></div>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00089">89</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00090">90</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IS_5FLOCAL_28x_29"></a><!-- doxytag: member="modules.h::IS_LOCAL" ref="IS_5FLOCAL_28x_29" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define IS_LOCAL </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">x </td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap> (x->fd > -1)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00106">106</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IS_5FMODULE_5FCREATED_28x_29"></a><!-- doxytag: member="modules.h::IS_MODULE_CREATED" ref="IS_5FMODULE_5FCREATED_28x_29" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define IS_MODULE_CREATED </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">x </td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap> (x->fd == FD_MAGIC_NUMBER)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00108">108</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IS_5FREMOTE_28x_29"></a><!-- doxytag: member="modules.h::IS_REMOTE" ref="IS_5FREMOTE_28x_29" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define IS_REMOTE </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">x </td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap> (x->fd < 0)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00107">107</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MT_5FCHANNEL"></a><!-- doxytag: member="modules.h::MT_CHANNEL" ref="MT_5FCHANNEL" args="" --><p>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00031">31</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00144">ModeMakeList()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00143">ModeMakeList()</a>. </td>
</tr>
</table>
<a class="anchor" name="MT_5FCLIENT"></a><!-- doxytag: member="modules.h::MT_CLIENT" ref="MT_5FCLIENT" args="" --><p>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00032">32</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="MT_5FSERVER"></a><!-- doxytag: member="modules.h::MT_SERVER" ref="MT_5FSERVER" args="" --><p>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00033">33</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="NONE"></a><!-- doxytag: member="modules.h::NONE" ref="NONE" args="" --><p>
Definition at line <a class="el" href="modules_8h-source.html#l00026">26</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
+<a class="anchor" name="TYPE_5FCHANNEL"></a><!-- doxytag: member="modules.h::TYPE_CHANNEL" ref="TYPE_5FCHANNEL" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define TYPE_CHANNEL 2 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00118">118</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="TYPE_5FSERVER"></a><!-- doxytag: member="modules.h::TYPE_SERVER" ref="TYPE_5FSERVER" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define TYPE_SERVER 3 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00119">119</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="TYPE_5FUSER"></a><!-- doxytag: member="modules.h::TYPE_USER" ref="TYPE_5FUSER" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define TYPE_USER 1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00117">117</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="VERBOSE"></a><!-- doxytag: member="modules.h::VERBOSE" ref="VERBOSE" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00053">53</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00232">Module::GetVersion()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00231">Module::GetVersion()</a>. </td>
</tr>
</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="chanuserlist"></a><!-- doxytag: member="modules.h::chanuserlist" ref="chanuserlist" args="" --><p>
+<a class="anchor" name="WM_5FAND"></a><!-- doxytag: member="modules.h::WM_AND" ref="WM_5FAND" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef std::deque<<a class="el" href="classuserrec.html">userrec</a>*> <a class="el" href="modules_8h.html#chanuserlist">chanuserlist</a> </td>
+ <td class="md" nowrap valign="top">#define WM_AND 1 </td>
</tr>
</table>
</td>
<td>
<p>
-Holds a list of users in a channel.
-<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00074">74</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00112">112</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="file_5Fcache"></a><!-- doxytag: member="modules.h::file_cache" ref="file_5Fcache" args="" --><p>
+<a class="anchor" name="WM_5FOR"></a><!-- doxytag: member="modules.h::WM_OR" ref="WM_5FOR" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef std::deque<<a class="el" href="namespaceirc.html#string">std::string</a>> <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> </td>
+ <td class="md" nowrap valign="top">#define WM_OR 2 </td>
</tr>
</table>
</td>
<td>
<p>
-Low level definition of a <a class="el" href="classFileReader.html">FileReader</a> classes file cache area.
-<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00065">65</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00113">113</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="ircd_5Fmodule"></a><!-- doxytag: member="modules.h::ircd_module" ref="ircd_5Fmodule" args="" --><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="chanuserlist"></a><!-- doxytag: member="modules.h::chanuserlist" ref="chanuserlist" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef DLLFactory<<a class="el" href="classModuleFactory.html">ModuleFactory</a>> <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> </td>
+ <td class="md" nowrap valign="top">typedef std::deque<<a class="el" href="classuserrec.html">userrec</a>*> <a class="el" href="modules_8h.html#chanuserlist">chanuserlist</a> </td>
</tr>
</table>
</td>
<td>
<p>
+Holds a list of users in a channel.
+<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01689">1689</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00075">75</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="string_5Flist"></a><!-- doxytag: member="modules.h::string_list" ref="string_5Flist" args="" --><p>
+<a class="anchor" name="file_5Fcache"></a><!-- doxytag: member="modules.h::file_cache" ref="file_5Fcache" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> <a class="el" href="modules_8h.html#string_5Flist">string_list</a> </td>
+ <td class="md" nowrap valign="top">typedef std::deque<<a class="el" href="namespaceirc.html#string">std::string</a>> <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> </td>
</tr>
</table>
</td>
<td>
<p>
+Low level definition of a <a class="el" href="classFileReader.html">FileReader</a> classes file cache area.
+<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00066">66</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29"></a><!-- doxytag: member="modules.h::createcommand" ref="createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29" args="(char *cmd, handlerfunc f, char flags, int minparams, char *source)" --><p>
+<a class="anchor" name="ircd_5Fmodule"></a><!-- doxytag: member="modules.h::ircd_module" ref="ircd_5Fmodule" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void createcommand </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char * </td>
- <td class="mdname" nowrap> <em>cmd</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> </td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char </td>
- <td class="mdname" nowrap> <em>flags</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>minparams</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char * </td>
- <td class="mdname" nowrap> <em>source</em></td>
+ <td class="md" nowrap valign="top">typedef DLLFactory<<a class="el" href="classModuleFactory.html">ModuleFactory</a>> <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> </td>
</tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l01707">1707</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="string_5Flist"></a><!-- doxytag: member="modules.h::string_list" ref="string_5Flist" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">typedef <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> <a class="el" href="modules_8h.html#string_5Flist">string_list</a> </td>
</tr>
</table>
</td>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00416">Server::AddCommand()</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00071">71</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
+<hr><h2>Function Documentation</h2>
<a class="anchor" name="ModeDefined_28char_20c_2C_20int_20i_29"></a><!-- doxytag: member="modules.h::ModeDefined" ref="ModeDefined_28char_20c_2C_20int_20i_29" args="(char c, int i)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00071">71</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00070">70</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00081"></a>00081 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> i->params_when_off;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> 0;
-<a name="l00131"></a>00131 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> i->params_when_off;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 0;
+<a name="l00130"></a>00130 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00108">108</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00107">107</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> i->params_when_on;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 0;
-<a name="l00118"></a>00118 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> i->params_when_on;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> 0;
+<a name="l00117"></a>00117 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00095">95</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00094">94</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00083">83</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00082">82</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>))
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00093"></a>00093 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00092"></a>00092 }
</pre></div>
<p>
</td>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00144">144</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 i->list = <span class="keyword">true</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
-<a name="l00155"></a>00155 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 i->list = <span class="keyword">true</span>;
+<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 <span class="keywordflow">return</span>;
+<a name="l00154"></a>00154 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="modules.h::server_mode" ref="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void server_mode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">char ** </td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int </td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 275,32 373,59
-rect $modules_8cpp-source.html 275,95 373,121
-rect $typedefs_8h-source.html 140,57 225,84
+rect $channels_8cpp-source.html 288,57 387,84
+rect $modules_8cpp-source.html 288,108 387,135
+rect $inspircd__io_8h-source.html 142,57 238,84
+rect $typedefs_8h-source.html 147,108 232,135
-029327ee049ffb0b20c7a5fec8c0bf60
\ No newline at end of file
+a9c8e3f1de38b14742a7373870135e9c
\ No newline at end of file
base referer
-rect $base_8h-source.html 283,108 344,135
-rect $ctables_8h-source.html 145,209 220,236
-rect $socket_8h-source.html 427,361 499,388
-rect $inspircd_8h-source.html 273,209 353,236
+rect $base_8h-source.html 152,159 214,185
+rect $ctables_8h-source.html 146,108 220,135
+rect $socket_8h-source.html 147,336 219,363
-8349e345831c364ad6f1773db4ad756f
\ No newline at end of file
+b8bad034c27cd1c2ec23841d82552230
\ No newline at end of file
Definition at line <a class="el" href="hashcomp_8h-source.html#l00129">129</a> of file <a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<ul>
<li>string
: <a class="el" href="namespaceirc.html#string">irc</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<ul>
<li>string
: <a class="el" href="namespaceirc.html#string">irc</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">hash< string ></a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr><td class="indexkey"><a class="el" href="namespacenspace.html">nspace</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "inspstring.h"</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "inspstring.h"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "helperfuncs.h"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00038"></a>00038
<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keyword">extern</span> <a class="code" href="classSocketEngine.html">SocketEngine</a>* <a class="code" href="modules_8cpp.html#SE">SE</a>;
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="socket_8cpp.html#boundPortCount">boundPortCount</a>;
-<a name="l00043"></a>00043 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">openSockfd</a>[<a class="code" href="inspircd_8h.html#MAXSOCKS">MAXSOCKS</a>];
-<a name="l00044"></a>00044 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00045"></a>00045
-<a name="l00046"></a><a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">00046</a> <a class="code" href="classInspSocket.html">InspSocket</a>* <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535];
-<a name="l00047"></a>00047
-<a name="l00048"></a><a class="code" href="classInspSocket.html#InspSocket_28_29">00048</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>()
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="classInspSocket.html#InspSocket_28int_20newfd_2C_20char_20_2Aip_29">00053</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 this-><a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
-<a name="l00056"></a>00056 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
-<a name="l00057"></a>00057 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00058"></a>00058 SE-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00059"></a>00059 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a><a class="code" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">00062</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (listening) {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> ((this->fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00068"></a>00068 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00069"></a>00069 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00070"></a>00070 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
-<a name="l00071"></a>00071 <span class="keywordflow">return</span>;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this->fd,this->client,this->server,port,(<span class="keywordtype">char</span>*)host.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00078"></a>00078 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00079"></a>00079 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00080"></a>00080 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
-<a name="l00081"></a>00081 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
-<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 <span class="keywordflow">else</span>
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
-<a name="l00087"></a>00087 SE-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00088"></a>00088 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00089"></a>00089 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
-<a name="l00090"></a>00090 <span class="keywordflow">return</span>;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 } <span class="keywordflow">else</span> {
-<a name="l00094"></a>00094 <span class="keywordtype">char</span>* ip;
-<a name="l00095"></a>00095 this->host = host;
-<a name="l00096"></a>00096 hostent* hoste = gethostbyname(host.c_str());
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!hoste) {
-<a name="l00098"></a>00098 ip = (<span class="keywordtype">char</span>*)host.c_str();
-<a name="l00099"></a>00099 } <span class="keywordflow">else</span> {
-<a name="l00100"></a>00100 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste->h_addr;
-<a name="l00101"></a>00101 ip = inet_ntoa(*ia);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
-<a name="l00107"></a>00107 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00111"></a>00111 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00112"></a>00112 <span class="keywordflow">return</span>;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 this->port = port;
-<a name="l00115"></a>00115 inet_aton(ip,&<a class="code" href="classInspSocket.html#addy">addy</a>);
-<a name="l00116"></a>00116 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
-<a name="l00117"></a>00117 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
-<a name="l00118"></a>00118 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this->port);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordtype">int</span> flags;
-<a name="l00121"></a>00121 flags = fcntl(this->fd, F_GETFL, 0);
-<a name="l00122"></a>00122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keywordflow">if</span>(connect(this->fd, (sockaddr*)&this->addr,<span class="keyword">sizeof</span>(this->addr)) == -1)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (errno != EINPROGRESS)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00129"></a>00129 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
-<a name="l00130"></a>00130 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00131"></a>00131 <span class="keywordflow">return</span>;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
-<a name="l00135"></a>00135 SE-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00136"></a>00136 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00137"></a>00137 <span class="keywordflow">return</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a><a class="code" href="classInspSocket.html#Close_28_29">00141</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">InspSocket::Close</a>()
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (this->fd != -1)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 this-><a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
-<a name="l00146"></a>00146 shutdown(this->fd,2);
-<a name="l00147"></a>00147 close(this->fd);
-<a name="l00148"></a>00148 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
-<a name="l00149"></a>00149 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a><a class="code" href="classInspSocket.html#GetIP_28_29">00153</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">InspSocket::GetIP</a>()
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#IP">IP</a>;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157
-<a name="l00158"></a><a class="code" href="classInspSocket.html#Read_28_29">00158</a> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">InspSocket::Read</a>()
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="keywordtype">int</span> n = recv(this->fd,this->ibuf,<span class="keyword">sizeof</span>(this->ibuf),0);
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (n > 0)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[n] = 0;
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 <span class="keywordflow">else</span>
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> NULL;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="comment">// There are two possible outcomes to this function.</span>
-<a name="l00174"></a>00174 <span class="comment">// It will either write all of the data, or an undefined amount.</span>
-<a name="l00175"></a>00175 <span class="comment">// If an undefined amount is written the connection has failed</span>
-<a name="l00176"></a>00176 <span class="comment">// and should be aborted.</span>
-<a name="l00177"></a><a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">00177</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket::Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str();
-<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0;
-<a name="l00181"></a>00181 <span class="keywordtype">int</span> n = 0;
-<a name="l00182"></a>00182 <span class="keywordtype">int</span> s = data.length();
-<a name="l00183"></a>00183 <span class="keywordflow">while</span> ((written < data.length()) && (n >= 0))
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 n = send(this->fd,d,s,0);
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (n > 0)
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <span class="comment">// If we didnt write everything, advance</span>
-<a name="l00189"></a>00189 <span class="comment">// the pointers so that when we retry</span>
-<a name="l00190"></a>00190 <span class="comment">// the next time around the loop, we try</span>
-<a name="l00191"></a>00191 <span class="comment">// to write what we failed to write before.</span>
-<a name="l00192"></a>00192 written += n;
-<a name="l00193"></a>00193 s -= n;
-<a name="l00194"></a>00194 d += n;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> written;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199
-<a name="l00200"></a><a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">00200</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket::Timeout</a>(time_t current)
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((this->state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) && (current > <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="comment">// for non-listening sockets, the timeout can occur</span>
-<a name="l00205"></a>00205 <span class="comment">// which causes termination of the connection after</span>
-<a name="l00206"></a>00206 <span class="comment">// the given number of seconds without a successful</span>
-<a name="l00207"></a>00207 <span class="comment">// connection.</span>
-<a name="l00208"></a>00208 this-><a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
-<a name="l00209"></a>00209 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
-<a name="l00210"></a>00210 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
-<a name="l00211"></a>00211 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216
-<a name="l00217"></a><a class="code" href="classInspSocket.html#Poll_28_29">00217</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">InspSocket::Poll</a>()
-<a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="keywordtype">int</span> incoming = -1;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordflow">switch</span> (this->state)
-<a name="l00222"></a>00222 {
-<a name="l00223"></a>00223 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
-<a name="l00224"></a>00224 this-><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
-<a name="l00225"></a>00225 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
-<a name="l00226"></a>00226 <span class="comment"> * in read-state.</span>
-<a name="l00227"></a>00227 <span class="comment"> */</span>
-<a name="l00228"></a>00228 SE-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this->fd);
-<a name="l00229"></a>00229 SE-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
-<a name="l00231"></a>00231 <span class="keywordflow">break</span>;
-<a name="l00232"></a>00232 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
-<a name="l00233"></a>00233 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
-<a name="l00234"></a>00234 incoming = accept (this->fd, (sockaddr*)&<a class="code" href="classInspSocket.html#client">client</a>,&<a class="code" href="classInspSocket.html#length">length</a>);
-<a name="l00235"></a>00235 this-><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(client.sin_addr));
-<a name="l00236"></a>00236 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00237"></a>00237 <span class="keywordflow">break</span>;
-<a name="l00238"></a>00238 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
-<a name="l00240"></a>00240 <span class="keywordflow">break</span>;
-<a name="l00241"></a>00241 <span class="keywordflow">default</span>:
-<a name="l00242"></a>00242 <span class="keywordflow">break</span>;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247
-<a name="l00248"></a><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">00248</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">InspSocket::SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
-<a name="l00251"></a>00251 this-><a class="code" href="classInspSocket.html#state">state</a> = s;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a><a class="code" href="classInspSocket.html#GetState_28_29">00254</a> <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">InspSocket::GetState</a>()
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#state">state</a>;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00259"></a><a class="code" href="classInspSocket.html#GetFd_28_29">00259</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">InspSocket::GetFd</a>()
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#fd">fd</a>;
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a><a class="code" href="classInspSocket.html#OnConnected_28_29">00264</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">InspSocket::OnConnected</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-<a name="l00265"></a><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">00265</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">InspSocket::OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e) { <span class="keywordflow">return</span>; }
-<a name="l00266"></a><a class="code" href="classInspSocket.html#OnDisconnect_28_29">00266</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">InspSocket::OnDisconnect</a>() { <span class="keywordflow">return</span> 0; }
-<a name="l00267"></a><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">00267</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">InspSocket::OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip) { <span class="keywordflow">return</span> 0; }
-<a name="l00268"></a><a class="code" href="classInspSocket.html#OnDataReady_28_29">00268</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">InspSocket::OnDataReady</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-<a name="l00269"></a><a class="code" href="classInspSocket.html#OnTimeout_28_29">00269</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">InspSocket::OnTimeout</a>() { <span class="keywordflow">return</span>; }
-<a name="l00270"></a><a class="code" href="classInspSocket.html#OnClose_28_29">00270</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">InspSocket::OnClose</a>() { <span class="keywordflow">return</span>; }
-<a name="l00271"></a>00271
-<a name="l00272"></a><a class="code" href="classInspSocket.html#_7EInspSocket_28_29">00272</a> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">InspSocket::~InspSocket</a>()
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277 <span class="comment">/*</span>
-<a name="l00278"></a>00278 <span class="comment">int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr)</span>
-<a name="l00279"></a>00279 <span class="comment">int OpenTCPSocket (void)</span>
-<a name="l00280"></a>00280 <span class="comment">*/</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00040"></a>00040 <span class="keyword">extern</span> <a class="code" href="classInspIRCd.html">InspIRCd</a>* <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>;
+<a name="l00041"></a>00041 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00042"></a>00042
+<a name="l00043"></a><a class="code" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">00043</a> <a class="code" href="classInspSocket.html">InspSocket</a>* <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535];
+<a name="l00044"></a>00044
+<a name="l00045"></a><a class="code" href="classInspSocket.html#InspSocket_28_29">00045</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>()
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049
+<a name="l00050"></a><a class="code" href="classInspSocket.html#InspSocket_28int_20newfd_2C_20char_20_2Aip_29">00050</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip)
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 this-><a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
+<a name="l00053"></a>00053 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
+<a name="l00054"></a>00054 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00055"></a>00055 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00056"></a>00056 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00059"></a><a class="code" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">00059</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (listening) {
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> ((this->fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00065"></a>00065 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00066"></a>00066 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00067"></a>00067 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
+<a name="l00068"></a>00068 <span class="keywordflow">return</span>;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="keywordflow">else</span>
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this->fd,this->client,this->server,port,(<span class="keywordtype">char</span>*)host.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00075"></a>00075 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00076"></a>00076 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00077"></a>00077 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
+<a name="l00078"></a>00078 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
+<a name="l00079"></a>00079 <span class="keywordflow">return</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <span class="keywordflow">else</span>
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
+<a name="l00084"></a>00084 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00085"></a>00085 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00086"></a>00086 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
+<a name="l00087"></a>00087 <span class="keywordflow">return</span>;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 } <span class="keywordflow">else</span> {
+<a name="l00091"></a>00091 <span class="keywordtype">char</span>* ip;
+<a name="l00092"></a>00092 this->host = host;
+<a name="l00093"></a>00093 hostent* hoste = gethostbyname(host.c_str());
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!hoste) {
+<a name="l00095"></a>00095 ip = (<span class="keywordtype">char</span>*)host.c_str();
+<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
+<a name="l00097"></a>00097 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste->h_addr;
+<a name="l00098"></a>00098 ip = inet_ntoa(*ia);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 this-><a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
+<a name="l00104"></a>00104 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00108"></a>00108 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00109"></a>00109 <span class="keywordflow">return</span>;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 this->port = port;
+<a name="l00112"></a>00112 inet_aton(ip,&<a class="code" href="classInspSocket.html#addy">addy</a>);
+<a name="l00113"></a>00113 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
+<a name="l00114"></a>00114 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
+<a name="l00115"></a>00115 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this->port);
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">int</span> flags;
+<a name="l00118"></a>00118 flags = fcntl(this->fd, F_GETFL, 0);
+<a name="l00119"></a>00119 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keywordflow">if</span>(connect(this->fd, (sockaddr*)&this->addr,<span class="keyword">sizeof</span>(this->addr)) == -1)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (errno != EINPROGRESS)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00126"></a>00126 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
+<a name="l00127"></a>00127 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
+<a name="l00132"></a>00132 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00133"></a>00133 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a><a class="code" href="classInspSocket.html#Close_28_29">00138</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">InspSocket::Close</a>()
+<a name="l00139"></a>00139 {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (this->fd != -1)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 this-><a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
+<a name="l00143"></a>00143 shutdown(this->fd,2);
+<a name="l00144"></a>00144 close(this->fd);
+<a name="l00145"></a>00145 socket_ref[this-><a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
+<a name="l00146"></a>00146 this-><a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149
+<a name="l00150"></a><a class="code" href="classInspSocket.html#GetIP_28_29">00150</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">InspSocket::GetIP</a>()
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#IP">IP</a>;
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154
+<a name="l00155"></a><a class="code" href="classInspSocket.html#Read_28_29">00155</a> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">InspSocket::Read</a>()
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordtype">int</span> n = recv(this->fd,this->ibuf,<span class="keyword">sizeof</span>(this->ibuf),0);
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (n > 0)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>[n] = 0;
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 <span class="keywordflow">else</span>
+<a name="l00164"></a>00164 {
+<a name="l00165"></a>00165 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> NULL;
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="comment">// There are two possible outcomes to this function.</span>
+<a name="l00171"></a>00171 <span class="comment">// It will either write all of the data, or an undefined amount.</span>
+<a name="l00172"></a>00172 <span class="comment">// If an undefined amount is written the connection has failed</span>
+<a name="l00173"></a>00173 <span class="comment">// and should be aborted.</span>
+<a name="l00174"></a><a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">00174</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket::Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a> = this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a> + data;
+<a name="l00177"></a>00177 this-><a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> data.length();
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a><a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">00181</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">InspSocket::FlushWriteBuffer</a>()
+<a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordtype">int</span> result = 0;
+<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this->Buffer.length())
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 result = send(this->fd,this->Buffer.c_str(),this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a>.length(),0);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (result > 0)
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="comment">/* If we wrote some, advance the buffer forwards */</span>
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* n = (<span class="keywordtype">char</span>*)this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a>.c_str();
+<a name="l00191"></a>00191 n += result;
+<a name="l00192"></a>00192 this-><a class="code" href="classInspSocket.html#Buffer">Buffer</a> = n;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196
+<a name="l00197"></a><a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">00197</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket::Timeout</a>(time_t current)
+<a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> ((this->state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) && (current > <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <span class="comment">// for non-listening sockets, the timeout can occur</span>
+<a name="l00202"></a>00202 <span class="comment">// which causes termination of the connection after</span>
+<a name="l00203"></a>00203 <span class="comment">// the given number of seconds without a successful</span>
+<a name="l00204"></a>00204 <span class="comment">// connection.</span>
+<a name="l00205"></a>00205 this-><a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00206"></a>00206 this-><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
+<a name="l00207"></a>00207 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
+<a name="l00208"></a>00208 this-><a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (this->Buffer.length())
+<a name="l00212"></a>00212 this-><a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
+<a name="l00216"></a><a class="code" href="classInspSocket.html#Poll_28_29">00216</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">InspSocket::Poll</a>()
+<a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 <span class="keywordtype">int</span> incoming = -1;
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordflow">switch</span> (this->state)
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
+<a name="l00223"></a>00223 this-><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
+<a name="l00224"></a>00224 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
+<a name="l00225"></a>00225 <span class="comment"> * in read-state.</span>
+<a name="l00226"></a>00226 <span class="comment"> */</span>
+<a name="l00227"></a>00227 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this->fd);
+<a name="l00228"></a>00228 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this->fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00229"></a>00229 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
+<a name="l00230"></a>00230 <span class="keywordflow">break</span>;
+<a name="l00231"></a>00231 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
+<a name="l00232"></a>00232 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
+<a name="l00233"></a>00233 incoming = accept (this->fd, (sockaddr*)&<a class="code" href="classInspSocket.html#client">client</a>,&<a class="code" href="classInspSocket.html#length">length</a>);
+<a name="l00234"></a>00234 this-><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(client.sin_addr));
+<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00236"></a>00236 <span class="keywordflow">break</span>;
+<a name="l00237"></a>00237 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
+<a name="l00239"></a>00239 <span class="keywordflow">break</span>;
+<a name="l00240"></a>00240 <span class="keywordflow">default</span>:
+<a name="l00241"></a>00241 <span class="keywordflow">break</span>;
+<a name="l00242"></a>00242 }
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246
+<a name="l00247"></a><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">00247</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">InspSocket::SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
+<a name="l00250"></a>00250 this-><a class="code" href="classInspSocket.html#state">state</a> = s;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a><a class="code" href="classInspSocket.html#GetState_28_29">00253</a> <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">InspSocket::GetState</a>()
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#state">state</a>;
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a><a class="code" href="classInspSocket.html#GetFd_28_29">00258</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">InspSocket::GetFd</a>()
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> this-><a class="code" href="classInspSocket.html#fd">fd</a>;
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262
+<a name="l00263"></a><a class="code" href="classInspSocket.html#OnConnected_28_29">00263</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">InspSocket::OnConnected</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00264"></a><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">00264</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">InspSocket::OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e) { <span class="keywordflow">return</span>; }
+<a name="l00265"></a><a class="code" href="classInspSocket.html#OnDisconnect_28_29">00265</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">InspSocket::OnDisconnect</a>() { <span class="keywordflow">return</span> 0; }
+<a name="l00266"></a><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">00266</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">InspSocket::OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip) { <span class="keywordflow">return</span> 0; }
+<a name="l00267"></a><a class="code" href="classInspSocket.html#OnDataReady_28_29">00267</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">InspSocket::OnDataReady</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00268"></a><a class="code" href="classInspSocket.html#OnTimeout_28_29">00268</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">InspSocket::OnTimeout</a>() { <span class="keywordflow">return</span>; }
+<a name="l00269"></a><a class="code" href="classInspSocket.html#OnClose_28_29">00269</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">InspSocket::OnClose</a>() { <span class="keywordflow">return</span>; }
+<a name="l00270"></a>00270
+<a name="l00271"></a><a class="code" href="classInspSocket.html#_7EInspSocket_28_29">00271</a> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">InspSocket::~InspSocket</a>()
+<a name="l00272"></a>00272 {
+<a name="l00273"></a>00273 this-><a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="comment">/*</span>
+<a name="l00277"></a>00277 <span class="comment">int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr)</span>
+<a name="l00278"></a>00278 <span class="comment">int OpenTCPSocket (void)</span>
+<a name="l00279"></a>00279 <span class="comment">*/</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include "<a class="el" href="socket_8h-source.html">socket.h</a>"</code><br>
<code>#include "<a class="el" href="inspircd_8h-source.html">inspircd.h</a>"</code><br>
<code>#include "<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>"</code><br>
-<code>#include "inspircd_util.h"</code><br>
<code>#include "inspstring.h"</code><br>
<code>#include "helperfuncs.h"</code><br>
<code>#include "<a class="el" href="socketengine_8h-source.html">socketengine.h</a>"</code><br>
<p>
Include dependency graph for socket.cpp:<p><center><img src="socket_8cpp__incl.gif" border="0" usemap="#socket.cpp_map" alt=""></center>
<map name="socket.cpp_map">
-<area href="socket_8h-source.html" shape="rect" coords="456,374,528,400" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="301,450,381,476" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="444,424,540,451" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="140,830,252,856" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="318,463,390,490" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="155,424,235,451" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="306,564,402,591" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="298,210,410,236" alt="">
</map>
<p>
<a href="socket_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#SE">SE</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#boundPortCount">boundPortCount</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">openSockfd</a> [MAXSOCKS]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#ServerInstance">ServerInstance</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#TIME">TIME</a></td></tr>
</table>
<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="boundPortCount"></a><!-- doxytag: member="socket.cpp::boundPortCount" ref="boundPortCount" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="socket_8cpp.html#boundPortCount">boundPortCount</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="openSockfd_5BMAXSOCKS_5D"></a><!-- doxytag: member="socket.cpp::openSockfd" ref="openSockfd_5BMAXSOCKS_5D" args="[MAXSOCKS]" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">openSockfd</a>[MAXSOCKS] </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="SE"></a><!-- doxytag: member="socket.cpp::SE" ref="SE" args="" --><p>
+<a class="anchor" name="ServerInstance"></a><!-- doxytag: member="socket.cpp::ServerInstance" ref="ServerInstance" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a>* <a class="el" href="socket_8cpp.html#SE">SE</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a> </td>
</tr>
</table>
</td>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classInspSocket.html">InspSocket</a>* <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspSocket.html">InspSocket</a>* <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535] </td>
</tr>
</table>
</td>
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00046">46</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. </td>
+Definition at line <a class="el" href="socket_8cpp-source.html#l00043">43</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. </td>
</tr>
</table>
<a class="anchor" name="TIME"></a><!-- doxytag: member="socket.cpp::TIME" ref="TIME" args="" --><p>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $socket_8h-source.html 456,374 528,400
-rect $inspircd_8h-source.html 301,450 381,476
-rect $inspircd__io_8h-source.html 444,424 540,451
-rect $socketengine_8h-source.html 140,830 252,856
+rect $socket_8h-source.html 318,463 390,490
+rect $inspircd_8h-source.html 155,424 235,451
+rect $inspircd__io_8h-source.html 306,564 402,591
+rect $socketengine_8h-source.html 298,210 410,236
-9f75c46dbd63c7144404dcb531abb481
\ No newline at end of file
+03426437789107bb0505454dfe45ab2a
\ No newline at end of file
<a name="l00092"></a>00092
<a name="l00097"></a><a class="code" href="classInspSocket.html#timeout">00097</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#timeout">timeout</a>;
<a name="l00098"></a>00098
-<a name="l00106"></a><a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">00106</a> <span class="keywordtype">char</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[16384];
+<a name="l00106"></a><a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">00106</a> <span class="keywordtype">char</span> <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>[65535];
<a name="l00107"></a>00107
-<a name="l00113"></a><a class="code" href="classInspSocket.html#IP">00113</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#IP">IP</a>;
-<a name="l00114"></a>00114
-<a name="l00119"></a><a class="code" href="classInspSocket.html#client">00119</a> sockaddr_in <a class="code" href="classInspSocket.html#client">client</a>;
-<a name="l00120"></a>00120
-<a name="l00125"></a><a class="code" href="classInspSocket.html#server">00125</a> sockaddr_in <a class="code" href="classInspSocket.html#server">server</a>;
-<a name="l00126"></a>00126
-<a name="l00131"></a><a class="code" href="classInspSocket.html#length">00131</a> socklen_t <a class="code" href="classInspSocket.html#length">length</a>;
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keyword">public</span>:
-<a name="l00134"></a>00134
-<a name="l00139"></a>00139 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>();
-<a name="l00140"></a>00140
-<a name="l00149"></a>00149 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
-<a name="l00150"></a>00150
-<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#host">host</a>, <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#port">port</a>, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime);
-<a name="l00161"></a>00161
-<a name="l00167"></a>00167 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
-<a name="l00168"></a>00168
-<a name="l00175"></a>00175 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e);
-<a name="l00176"></a>00176
-<a name="l00181"></a>00181 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">OnDisconnect</a>();
-<a name="l00182"></a>00182
-<a name="l00195"></a>00195 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
-<a name="l00196"></a>00196
-<a name="l00204"></a>00204 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00111"></a><a class="code" href="classInspSocket.html#Buffer">00111</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#Buffer">Buffer</a>;
+<a name="l00112"></a>00112
+<a name="l00118"></a><a class="code" href="classInspSocket.html#IP">00118</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#IP">IP</a>;
+<a name="l00119"></a>00119
+<a name="l00124"></a><a class="code" href="classInspSocket.html#client">00124</a> sockaddr_in <a class="code" href="classInspSocket.html#client">client</a>;
+<a name="l00125"></a>00125
+<a name="l00130"></a><a class="code" href="classInspSocket.html#server">00130</a> sockaddr_in <a class="code" href="classInspSocket.html#server">server</a>;
+<a name="l00131"></a>00131
+<a name="l00136"></a><a class="code" href="classInspSocket.html#length">00136</a> socklen_t <a class="code" href="classInspSocket.html#length">length</a>;
+<a name="l00137"></a>00137
+<a name="l00140"></a>00140 <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">public</span>:
+<a name="l00143"></a>00143
+<a name="l00148"></a>00148 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>();
+<a name="l00149"></a>00149
+<a name="l00158"></a>00158 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
+<a name="l00159"></a>00159
+<a name="l00169"></a>00169 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#host">host</a>, <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#port">port</a>, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime);
+<a name="l00170"></a>00170
+<a name="l00176"></a>00176 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
+<a name="l00177"></a>00177
+<a name="l00184"></a>00184 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e);
+<a name="l00185"></a>00185
+<a name="l00190"></a>00190 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">OnDisconnect</a>();
+<a name="l00191"></a>00191
+<a name="l00204"></a>00204 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
<a name="l00205"></a>00205
-<a name="l00214"></a>00214 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
-<a name="l00215"></a>00215
-<a name="l00221"></a>00221 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">Read</a>();
-<a name="l00222"></a>00222
-<a name="l00228"></a>00228 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">GetIP</a>();
-<a name="l00229"></a>00229
-<a name="l00236"></a>00236 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">Timeout</a>(time_t current);
-<a name="l00237"></a>00237
-<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
-<a name="l00244"></a>00244
-<a name="l00258"></a>00258 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
-<a name="l00259"></a>00259
-<a name="l00265"></a>00265 <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s);
-<a name="l00266"></a>00266
-<a name="l00270"></a>00270 <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">GetState</a>();
-<a name="l00271"></a>00271
-<a name="l00280"></a>00280 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">Poll</a>();
-<a name="l00281"></a>00281
-<a name="l00287"></a>00287 <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">GetFd</a>();
-<a name="l00288"></a>00288
-<a name="l00294"></a>00294 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00295"></a>00295
-<a name="l00301"></a>00301 <span class="keyword">virtual</span> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a>();
-<a name="l00302"></a>00302 };
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00213"></a>00213 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00214"></a>00214
+<a name="l00223"></a>00223 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
+<a name="l00224"></a>00224
+<a name="l00230"></a>00230 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">Read</a>();
+<a name="l00231"></a>00231
+<a name="l00237"></a>00237 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">GetIP</a>();
+<a name="l00238"></a>00238
+<a name="l00245"></a>00245 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">Timeout</a>(time_t current);
+<a name="l00246"></a>00246
+<a name="l00252"></a>00252 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
+<a name="l00253"></a>00253
+<a name="l00267"></a>00267 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
+<a name="l00268"></a>00268
+<a name="l00274"></a>00274 <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s);
+<a name="l00275"></a>00275
+<a name="l00279"></a>00279 <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">GetState</a>();
+<a name="l00280"></a>00280
+<a name="l00289"></a>00289 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">Poll</a>();
+<a name="l00290"></a>00290
+<a name="l00296"></a>00296 <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">GetFd</a>();
+<a name="l00297"></a>00297
+<a name="l00303"></a>00303 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00304"></a>00304
+<a name="l00310"></a>00310 <span class="keyword">virtual</span> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a>();
+<a name="l00311"></a>00311 };
+<a name="l00312"></a>00312
+<a name="l00313"></a>00313 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<map name="socket.hdep_map">
<area href="modules_8cpp-source.html" shape="rect" coords="260,57,359,84" alt="">
<area href="socket_8cpp-source.html" shape="rect" coords="267,133,352,160" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="129,108,209,135" alt="">
<area href="modules_8h-source.html" shape="rect" coords="128,57,211,84" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="129,108,209,135" alt="">
</map>
<p>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
rect $modules_8cpp-source.html 260,57 359,84
rect $socket_8cpp-source.html 267,133 352,160
-rect $inspircd_8h-source.html 129,108 209,135
rect $modules_8h-source.html 128,57 211,84
+rect $inspircd_8h-source.html 129,108 209,135
-3c191a72f21affbd7a2ef0ada34c2b11
\ No newline at end of file
+44d57d2060fc1c23df1ada0b15f0d062
\ No newline at end of file
<a name="l00203"></a>00203 <span class="preprocessor">#endif</span>
<a name="l00204"></a>00204 <span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="stringliteral">"misconfigured"</span>;
<a name="l00205"></a>00205 }
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Include dependency graph for socketengine.cpp:<p><center><img src="socketengine_8cpp__incl.gif" border="0" usemap="#socketengine.cpp_map" alt=""></center>
<map name="socketengine.cpp_map">
-<area href="globals_8h-source.html" shape="rect" coords="343,209,417,236" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="340,57,420,84" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="180,159,292,185" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="492,210,567,236" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="180,108,260,135" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="308,159,420,186" alt="">
</map>
<p>
Referenced by <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socketengine_8cpp-source.html#l00057">SocketEngine::GetType()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00146">SocketEngine::Wait()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $globals_8h-source.html 343,209 417,236
-rect $inspircd_8h-source.html 340,57 420,84
-rect $socketengine_8h-source.html 180,159 292,185
+rect $globals_8h-source.html 492,210 567,236
+rect $inspircd_8h-source.html 180,108 260,135
+rect $socketengine_8h-source.html 308,159 420,186
-50741f9f6cf4a87616fd7184331c0fd9
\ No newline at end of file
+a9f3c9ef26b80d60108ae75da748354c
\ No newline at end of file
<a name="l00142"></a>00142 };
<a name="l00143"></a>00143
<a name="l00144"></a>00144 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="socketengine_8h__dep__incl.gif" border="0" usemap="#socketengine.hdep_map" alt=""></center>
<map name="socketengine.hdep_map">
-<area href="modules_8cpp-source.html" shape="rect" coords="180,7,279,33" alt="">
-<area href="socket_8cpp-source.html" shape="rect" coords="187,57,272,84" alt="">
-<area href="socketengine_8cpp-source.html" shape="rect" coords="167,108,292,135" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="469,311,568,338" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="476,412,561,439" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="295,58,420,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="479,108,559,135" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="167,260,247,287" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="469,210,568,236" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="309,260,405,287" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="315,210,400,236" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="305,311,409,338" alt="">
</map>
<p>
<p>
<p>
-Definition at line <a class="el" href="socketengine_8h-source.html#l00043">43</a> of file <a class="el" href="socketengine_8h-source.html">socketengine.h</a>. </td>
+Definition at line <a class="el" href="socketengine_8h-source.html#l00043">43</a> of file <a class="el" href="socketengine_8h-source.html">socketengine.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="X_5FESTAB_5FDNS"></a><!-- doxytag: member="socketengine.h::X_ESTAB_DNS" ref="X_5FESTAB_5FDNS" args="" --><p>
<p>
Definition at line <a class="el" href="socketengine_8h-source.html#l00044">44</a> of file <a class="el" href="socketengine_8h-source.html">socketengine.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00053">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00217">InspSocket::Poll()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00050">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>. </td>
</tr>
</table>
<a class="anchor" name="X_5FLISTEN"></a><!-- doxytag: member="socketengine.h::X_LISTEN" ref="X_5FLISTEN" args="" --><p>
Referenced by <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00146">SocketEngine::Wait()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $modules_8cpp-source.html 180,7 279,33
-rect $socket_8cpp-source.html 187,57 272,84
-rect $socketengine_8cpp-source.html 167,108 292,135
+rect $modules_8cpp-source.html 469,311 568,338
+rect $socket_8cpp-source.html 476,412 561,439
+rect $socketengine_8cpp-source.html 295,58 420,84
+rect $users_8cpp-source.html 479,108 559,135
+rect $inspircd_8h-source.html 167,260 247,287
+rect $channels_8cpp-source.html 469,210 568,236
+rect $inspircd__io_8h-source.html 309,260 405,287
+rect $typedefs_8h-source.html 315,210 400,236
+rect $userprocess_8h-source.html 305,311 409,338
-00d3a68c8884c78980281618846deffd
\ No newline at end of file
+5d41f86d6f67ff7b18b6ad71c4748bc2
\ No newline at end of file
-9faa242bc7dd08e1da2018aca66c84c3
\ No newline at end of file
+9fbbbfd9144c559ad108601ee9a99b89
\ No newline at end of file
<h1>dns_ip4list Member List</h1>This is the complete list of members for <a class="el" href="structdns__ip4list.html">dns_ip4list</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structdns__ip4list.html#ip">ip</a></td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structdns__ip4list.html#next">next</a></td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="dns_8h-source.html">dns.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>irc::InAddr_HashComp Member List</h1>This is the complete list of members for <a class="el" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structirc_1_1InAddr__HashComp.html#operator_28_29_28const_20in_5Faddr_20_26s_31_2C_20const_20in_5Faddr_20_26s_32_29_20const_20">operator()</a>(const in_addr &s1, const in_addr &s2) const </td><td><a class="el" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>irc::StrHashComp Member List</h1>This is the complete list of members for <a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structirc_1_1StrHashComp.html#operator_28_29_28const_20std_3A_3Astring_20_26s_31_2C_20const_20std_3A_3Astring_20_26s_32_29_20const_20">operator()</a>(const std::string &s1, const std::string &s2) const </td><td><a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<tr class="memlist"><td><a class="el" href="structirc_1_1irc__char__traits.html#find_28const_20char_20_2As_31_2C_20int_20n_2C_20char_20c_29">find</a>(const char *s1, int n, char c)</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structirc_1_1irc__char__traits.html#lt_28char_20c_31st_2C_20char_20c_32nd_29">lt</a>(char c1st, char c2nd)</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structirc_1_1irc__char__traits.html#ne_28char_20c_31st_2C_20char_20c_32nd_29">ne</a>(char c1st, char c2nd)</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td><code> [static]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>nspace::hash< in_addr > Member List</h1>This is the complete list of members for <a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">nspace::hash< in_addr ></a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html#operator_28_29_28const_20struct_20in_5Faddr_20_26a_29_20const_20">operator()</a>(const struct in_addr &a) const </td><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">nspace::hash< in_addr ></a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<h1>nspace::hash< string > Member List</h1>This is the complete list of members for <a class="el" href="structnspace_1_1hash_3_01string_01_4.html">nspace::hash< string ></a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html#operator_28_29_28const_20string_20_26s_29_20const_20">operator()</a>(const string &s) const </td><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">nspace::hash< string ></a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div style="display: block;">
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder1', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder1', this)"/><a class="el" href="files.html" target="basefrm">File List</a></p>
<div id="folder1">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="aes_8h.html" target="basefrm">aes.h</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="base_8h.html" target="basefrm">base.h</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="channels_8cpp.html" target="basefrm">channels.cpp</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="channels_8h.html" target="basefrm">channels.h</a></p>
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder2', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder2', this)"/><a class="el" href="annotated.html" target="basefrm">Class List</a></p>
<div id="folder2">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classAdmin.html" target="basefrm">Admin</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classAES.html" target="basefrm">AES</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classBanItem.html" target="basefrm">BanItem</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classBoolSet.html" target="basefrm">BoolSet</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classchanrec.html" target="basefrm">chanrec</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classstd_1_1char__traits.html" target="basefrm">char_traits</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classclassbase.html" target="basefrm">classbase</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcmd__mode.html" target="basefrm">cmd_mode</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcommand__t.html" target="basefrm">command_t</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classConfigReader.html" target="basefrm">ConfigReader</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classConnectClass.html" target="basefrm">ConnectClass</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structirc_1_1irc__char__traits.html" target="basefrm">irc::irc_char_traits</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classKLine.html" target="basefrm">KLine</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModeParameter.html" target="basefrm">ModeParameter</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModeParser.html" target="basefrm">ModeParser</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModule.html" target="basefrm">Module</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModuleFactory.html" target="basefrm">ModuleFactory</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModuleMessage.html" target="basefrm">ModuleMessage</a></p>
</div>
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder3', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder3', this)"/><a class="el" href="hierarchy.html" target="basefrm">Class Hierarchy</a></p>
<div id="folder3">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classAES.html" target="basefrm">AES</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classBoolSet.html" target="basefrm">BoolSet</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder4', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder4', this)"/><a class="el" href="classstd_1_1char__traits.html" target="basefrm">char_traits</a></p>
<div id="folder4">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder6', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder6', this)"/><a class="el" href="classExtensible.html" target="basefrm">Extensible</a></p>
<div id="folder6">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classchanrec.html" target="basefrm">chanrec</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcommand__t.html" target="basefrm">command_t</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder7', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder7', this)"/><a class="el" href="classconnection.html" target="basefrm">connection</a></p>
<div id="folder7">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classuserrec.html" target="basefrm">userrec</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classZLine.html" target="basefrm">ZLine</a></p>
</div>
</div>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder11', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder11', this)"/><a class="el" href="classcommand__t.html" target="basefrm">command_t</a></p>
+ <div id="folder11">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcmd__mode.html" target="basefrm">cmd_mode</a></p>
+ </div>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classCullItem.html" target="basefrm">CullItem</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classCullList.html" target="basefrm">CullList</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classDNS.html" target="basefrm">DNS</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structirc_1_1InAddr__HashComp.html" target="basefrm">irc::InAddr_HashComp</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classInspIRCd.html" target="basefrm">InspIRCd</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classInspSocket.html" target="basefrm">InspSocket</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModeParser.html" target="basefrm">ModeParser</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classserverstats.html" target="basefrm">serverstats</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classSocketEngine.html" target="basefrm">SocketEngine</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structirc_1_1StrHashComp.html" target="basefrm">irc::StrHashComp</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classWhoWasUser.html" target="basefrm">WhoWasUser</a></p>
</div>
<p><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="functions.html" target="basefrm">Class Members</a></p>
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder11', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder11', this)"/><a class="el" href="namespaces.html" target="basefrm">Namespace List</a></p>
- <div id="folder11">
+ <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder12', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder12', this)"/><a class="el" href="namespaces.html" target="basefrm">Namespace List</a></p>
+ <div id="folder12">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="namespaceirc.html" target="basefrm">irc</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="namespacenspace.html" target="basefrm">nspace</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="namespacestd.html" target="basefrm">std</a></p>
</div>
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder12', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder12', this)"/><a class="el" href="dirs.html" target="basefrm">Directories</a></p>
- <div id="folder12">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder13', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder13', this)"/><a class="el" href="dir_000000.html" target="basefrm">home</a></p>
- <div id="folder13">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder14', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder14', this)"/><a class="el" href="dir_000001.html" target="basefrm">brain</a></p>
- <div id="folder14">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder15', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder15', this)"/><a class="el" href="dir_000002.html" target="basefrm">inspircd-cvs</a></p>
- <div id="folder15">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder16', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder16', this)"/><a class="el" href="dir_000003.html" target="basefrm">inspircd</a></p>
- <div id="folder16">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder17', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder17', this)"/><a class="el" href="dir_000004.html" target="basefrm">include</a></p>
- <div id="folder17">
- </div>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder18', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder18', this)"/><a class="el" href="dir_000005.html" target="basefrm">src</a></p>
+ <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder13', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder13', this)"/><a class="el" href="dirs.html" target="basefrm">Directories</a></p>
+ <div id="folder13">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder14', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder14', this)"/><a class="el" href="dir_000000.html" target="basefrm">home</a></p>
+ <div id="folder14">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder15', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder15', this)"/><a class="el" href="dir_000001.html" target="basefrm">brain</a></p>
+ <div id="folder15">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder16', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder16', this)"/><a class="el" href="dir_000002.html" target="basefrm">inspircd-cvs</a></p>
+ <div id="folder16">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder17', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder17', this)"/><a class="el" href="dir_000003.html" target="basefrm">inspircd</a></p>
+ <div id="folder17">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder18', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder18', this)"/><a class="el" href="dir_000004.html" target="basefrm">include</a></p>
<div id="folder18">
</div>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2blank.png" alt=" " width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder19', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder19', this)"/><a class="el" href="dir_000005.html" target="basefrm">src</a></p>
+ <div id="folder19">
+ </div>
</div>
</div>
</div>
<a name="l00021"></a><a class="code" href="typedefs_8h.html#chan_5Fhash">00021</a> <span class="keyword">typedef</span> nspace::hash_map<std::string, chanrec*, nspace::hash<string>, <a class="code" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a>;
<a name="l00022"></a><a class="code" href="typedefs_8h.html#address_5Fcache">00022</a> <span class="keyword">typedef</span> nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, <a class="code" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a>> <a class="code" href="typedefs_8h.html#address_5Fcache">address_cache</a>;
<a name="l00023"></a><a class="code" href="typedefs_8h.html#whowas_5Fhash">00023</a> <span class="keyword">typedef</span> nspace::hash_map<std::string, WhoWasUser*, nspace::hash<string>, <a class="code" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>> <a class="code" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a>;
-<a name="l00024"></a><a class="code" href="typedefs_8h.html#command_5Ftable">00024</a> <span class="keyword">typedef</span> std::deque<command_t> <a class="code" href="typedefs_8h.html#command_5Ftable">command_table</a>;
-<a name="l00025"></a><a class="code" href="typedefs_8h.html#servernamelist">00025</a> <span class="keyword">typedef</span> std::vector<std::string> <a class="code" href="typedefs_8h.html#servernamelist">servernamelist</a>;
-<a name="l00026"></a><a class="code" href="typedefs_8h.html#ExtModeList">00026</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a>;
-<a name="l00027"></a><a class="code" href="typedefs_8h.html#ExtModeListIter">00027</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a>;
-<a name="l00028"></a><a class="code" href="typedefs_8h.html#file_5Fcache">00028</a> <span class="keyword">typedef</span> std::deque<std::string> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00024"></a><a class="code" href="typedefs_8h.html#servernamelist">00024</a> <span class="keyword">typedef</span> std::vector<std::string> <a class="code" href="typedefs_8h.html#servernamelist">servernamelist</a>;
+<a name="l00025"></a><a class="code" href="typedefs_8h.html#ExtModeList">00025</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a>;
+<a name="l00026"></a><a class="code" href="typedefs_8h.html#ExtModeListIter">00026</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a>;
+<a name="l00027"></a><a class="code" href="typedefs_8h.html#file_5Fcache">00027</a> <span class="keyword">typedef</span> std::deque<std::string> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<p>
Include dependency graph for typedefs.h:<p><center><img src="typedefs_8h__incl.gif" border="0" usemap="#typedefs.h_map" alt=""></center>
<map name="typedefs.h_map">
-<area href="users_8h-source.html" shape="rect" coords="568,463,632,489" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="684,361,769,388" alt="">
-<area href="hashcomp_8h-source.html" shape="rect" coords="141,108,235,135" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="300,209,375,236" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="439,235,519,261" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="147,311,229,337" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="441,412,516,439" alt="">
+<area href="users_8h-source.html" shape="rect" coords="280,245,344,272" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="404,448,489,475" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="400,93,493,120" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="275,600,349,627" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="143,335,223,361" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="141,600,224,627" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="145,423,220,449" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="typedefs_8h__dep__incl.gif" border="0" usemap="#typedefs.hdep_map" alt=""></center>
<map name="typedefs.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="141,7,240,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="141,58,240,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="141,7,240,33" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="141,57,240,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="151,108,231,135" alt="">
</map>
<p>
<a class="el" href="namespaceirc.html#string">std::string</a>, <a class="el" href="classWhoWasUser.html">WhoWasUser</a> *,<br>
nspace::hash< <a class="el" href="namespaceirc.html#string">string</a> >, <a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::deque< <a class="el" href="classcommand__t.html">command_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a></td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector< <a class="el" href="namespaceirc.html#string">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#servernamelist">servernamelist</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector< <a class="el" href="classExtMode.html">ExtMode</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#ExtModeList">ExtModeList</a></td></tr>
Definition at line <a class="el" href="typedefs_8h-source.html#l00021">21</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="command_5Ftable"></a><!-- doxytag: member="typedefs.h::command_table" ref="command_5Ftable" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef std::deque<<a class="el" href="classcommand__t.html">command_t</a>> <a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00024">24</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
- </tr>
-</table>
<a class="anchor" name="ExtModeList"></a><!-- doxytag: member="typedefs.h::ExtModeList" ref="ExtModeList" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00026">26</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00025">25</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ExtModeListIter"></a><!-- doxytag: member="typedefs.h::ExtModeListIter" ref="ExtModeListIter" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00027">27</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00026">26</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="file_5Fcache"></a><!-- doxytag: member="typedefs.h::file_cache" ref="file_5Fcache" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00028">28</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00027">27</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="servernamelist"></a><!-- doxytag: member="typedefs.h::servernamelist" ref="servernamelist" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00025">25</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00024">24</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="user_5Fhash"></a><!-- doxytag: member="typedefs.h::user_hash" ref="user_5Fhash" args="" --><p>
Definition at line <a class="el" href="typedefs_8h-source.html#l00023">23</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 141,7 240,34
-rect $modules_8cpp-source.html 141,58 240,84
+rect $channels_8cpp-source.html 141,7 240,33
+rect $modules_8cpp-source.html 141,57 240,84
+rect $users_8cpp-source.html 151,108 231,135
-142082842cc532e4d4e382b14a7b2d29
\ No newline at end of file
+9650d15ddf009f9c420b6ac64e094f58
\ No newline at end of file
base referer
-rect $users_8h-source.html 568,463 632,489
-rect $channels_8h-source.html 684,361 769,388
-rect $hashcomp_8h-source.html 141,108 235,135
-rect $ctables_8h-source.html 300,209 375,236
-rect $inspircd_8h-source.html 439,235 519,261
-rect $modules_8h-source.html 147,311 229,337
-rect $globals_8h-source.html 441,412 516,439
+rect $users_8h-source.html 280,245 344,272
+rect $channels_8h-source.html 404,448 489,475
+rect $hashcomp_8h-source.html 400,93 493,120
+rect $ctables_8h-source.html 275,600 349,627
+rect $inspircd_8h-source.html 143,335 223,361
+rect $modules_8h-source.html 141,600 224,627
+rect $globals_8h-source.html 145,423 220,449
-137043db2e87cae486cf9cf5c587f147
\ No newline at end of file
+74b3db4e6e9c4732328fa3d4f91f37f3
\ No newline at end of file
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __USERPROCESS_H__</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckDie_28_29">CheckDie</a>();
-<a name="l00007"></a>00007 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#LoadAllModules_28_29">LoadAllModules</a>();
-<a name="l00008"></a>00008 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckRoot_28_29">CheckRoot</a>();
-<a name="l00009"></a>00009 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">OpenLog</a>(<span class="keywordtype">char</span>** argv, <span class="keywordtype">int</span> argc);
-<a name="l00010"></a>00010 <span class="keywordtype">bool</span> <a class="code" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">DoBackgroundUserStuff</a>(time_t TIME);
-<a name="l00011"></a>00011 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">ProcessUser</a>(<a class="code" href="classuserrec.html">userrec</a>* cu);
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
+<a name="l00006"></a>00006
+<a name="l00007"></a>00007 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckDie_28_29">CheckDie</a>();
+<a name="l00008"></a>00008 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">LoadAllModules</a>(<a class="code" href="classInspIRCd.html">InspIRCd</a>* ServerInstance);
+<a name="l00009"></a>00009 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckRoot_28_29">CheckRoot</a>();
+<a name="l00010"></a>00010 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">OpenLog</a>(<span class="keywordtype">char</span>** argv, <span class="keywordtype">int</span> argc);
+<a name="l00011"></a>00011 <span class="keywordtype">bool</span> <a class="code" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">DoBackgroundUserStuff</a>(time_t TIME);
+<a name="l00012"></a>00012 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">ProcessUser</a>(<a class="code" href="classuserrec.html">userrec</a>* cu);
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<div class="nav">
<a class="el" href="dir_000000.html">home</a> » <a class="el" href="dir_000001.html">brain</a> » <a class="el" href="dir_000002.html">inspircd-cvs</a> » <a class="el" href="dir_000003.html">inspircd</a> » <a class="el" href="dir_000004.html">include</a></div>
<h1>userprocess.h File Reference</h1><code>#include "<a class="el" href="users_8h-source.html">users.h</a>"</code><br>
+<code>#include "<a class="el" href="inspircd_8h-source.html">inspircd.h</a>"</code><br>
<p>
Include dependency graph for userprocess.h:<p><center><img src="userprocess_8h__incl.gif" border="0" usemap="#userprocess.h_map" alt=""></center>
<map name="userprocess.h_map">
-<area href="users_8h-source.html" shape="rect" coords="163,108,227,135" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="283,108,368,135" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="276,58,375,84" alt="">
+<area href="users_8h-source.html" shape="rect" coords="291,32,355,59" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="162,58,242,84" alt="">
</map>
<p>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#CheckDie_28_29">CheckDie</a> ()</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#LoadAllModules_28_29">LoadAllModules</a> ()</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">LoadAllModules</a> (<a class="el" href="classInspIRCd.html">InspIRCd</a> *<a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a>)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#CheckRoot_28_29">CheckRoot</a> ()</td></tr>
</td>
</tr>
</table>
-<a class="anchor" name="LoadAllModules_28_29"></a><!-- doxytag: member="userprocess.h::LoadAllModules" ref="LoadAllModules_28_29" args="()" --><p>
+<a class="anchor" name="LoadAllModules_28InspIRCd_20_2AServerInstance_29"></a><!-- doxytag: member="userprocess.h::LoadAllModules" ref="LoadAllModules_28InspIRCd_20_2AServerInstance_29" args="(InspIRCd *ServerInstance)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<tr>
<td class="md" nowrap valign="top">void LoadAllModules </td>
<td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>ServerInstance</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $users_8h-source.html 163,108 227,135
-rect $channels_8h-source.html 283,108 368,135
-rect $connection_8h-source.html 276,58 375,84
+rect $users_8h-source.html 291,32 355,59
+rect $inspircd_8h-source.html 162,58 242,84
-bd342784e8f38bb1e1aa5077552ba0a3
\ No newline at end of file
+1cd979ceea10e39121f05ee648f60ec5
\ No newline at end of file
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include "inspstring.h"</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="channels_8cpp.html#Config">Config</a>;
-<a name="l00034"></a>00034 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="classuserrec.html#userrec_28_29">00036</a> <a class="code" href="classuserrec.html#userrec_28_29">userrec::userrec</a>()
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
-<a name="l00039"></a>00039 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
-<a name="l00040"></a>00040 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
-<a name="l00041"></a>00041 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
-<a name="l00042"></a>00042 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
-<a name="l00043"></a>00043 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
-<a name="l00044"></a>00044 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
-<a name="l00045"></a>00045 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
-<a name="l00046"></a>00046 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
-<a name="l00047"></a>00047 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
-<a name="l00048"></a>00048 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
-<a name="l00049"></a>00049 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
-<a name="l00050"></a>00050 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00051"></a>00051 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
-<a name="l00052"></a>00052 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
-<a name="l00053"></a>00053 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
-<a name="l00054"></a>00054 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
-<a name="l00055"></a>00055 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
-<a name="l00056"></a>00056 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00057"></a>00057 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
-<a name="l00058"></a>00058 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
-<a name="l00059"></a>00059 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a><a class="code" href="classuserrec.html#_7Euserrec_28_29">00062</a> <a class="code" href="classuserrec.html#_7Euserrec_28_29">userrec::~userrec</a>()
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a><a class="code" href="classuserrec.html#CloseSocket_28_29">00066</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">userrec::CloseSocket</a>()
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 shutdown(this->fd,2);
-<a name="l00069"></a>00069 close(this->fd);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="classuserrec.html#GetFullHost_28_29">00072</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">userrec::GetFullHost</a>()
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
-<a name="l00075"></a>00075 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> result;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00079"></a><a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">00079</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">userrec::ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size)
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (this->fd > -1)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> read(this->fd, buffer, size);
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "wildcard.h"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">extern</span> <a class="code" href="classInspIRCd.html">InspIRCd</a>* <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>;
+<a name="l00040"></a>00040 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
+<a name="l00041"></a>00041 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
+<a name="l00042"></a>00042 <span class="keyword">extern</span> std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>;
+<a name="l00043"></a>00043 <span class="keyword">extern</span> std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>;
+<a name="l00044"></a>00044 <span class="keyword">extern</span> std::vector<InspSocket*> <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>;
+<a name="l00045"></a>00045 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
+<a name="l00046"></a>00046 <span class="keyword">extern</span> <a class="code" href="classInspSocket.html">InspSocket</a>* <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535];
+<a name="l00047"></a>00047 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00048"></a>00048 <span class="keyword">extern</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536];
+<a name="l00049"></a>00049 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a> *<a class="code" href="channels_8cpp.html#Config">Config</a>;
+<a name="l00050"></a>00050 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
+<a name="l00051"></a>00051 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a> <a class="code" href="users_8cpp.html#whowas">whowas</a>;
+<a name="l00052"></a><a class="code" href="users_8cpp.html#local_5Fusers">00052</a> std::vector<userrec*> <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>;
+<a name="l00053"></a>00053
+<a name="l00054"></a><a class="code" href="users_8cpp.html#all_5Fopers">00054</a> std::vector<userrec*> <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>;
+<a name="l00055"></a>00055
+<a name="l00056"></a><a class="code" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">00056</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> <a class="code" href="namespaceirc.html#string">string</a> <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(<span class="keyword">const</span> T &in)
+<a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 stringstream tmp;
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!(tmp << in)) <span class="keywordflow">return</span> <a class="code" href="namespaceirc.html#string">string</a>();
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> tmp.str();
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a><a class="code" href="classuserrec.html#userrec_28_29">00063</a> <a class="code" href="classuserrec.html#userrec_28_29">userrec::userrec</a>()
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
+<a name="l00066"></a>00066 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
+<a name="l00067"></a>00067 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
+<a name="l00068"></a>00068 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
+<a name="l00069"></a>00069 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
+<a name="l00070"></a>00070 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
+<a name="l00071"></a>00071 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
+<a name="l00072"></a>00072 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
+<a name="l00073"></a>00073 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
+<a name="l00074"></a>00074 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00078"></a>00078 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
+<a name="l00079"></a>00079 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
+<a name="l00080"></a>00080 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
+<a name="l00082"></a>00082 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
+<a name="l00083"></a>00083 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00084"></a>00084 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
+<a name="l00085"></a>00085 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
+<a name="l00086"></a>00086 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
+<a name="l00087"></a>00087 }
<a name="l00088"></a>00088
-<a name="l00089"></a><a class="code" href="classuserrec.html#GetFullRealHost_28_29">00089</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">userrec::GetFullRealHost</a>()
+<a name="l00089"></a><a class="code" href="classuserrec.html#_7Euserrec_28_29">00089</a> <a class="code" href="classuserrec.html#_7Euserrec_28_29">userrec::~userrec</a>()
<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
-<a name="l00092"></a>00092 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> fresult;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a><a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">00096</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">userrec::IsInvited</a>(<span class="keywordtype">char</span>* channel)
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (i->channel) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a><a class="code" href="classuserrec.html#GetInviteList_28_29">00110</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">userrec::GetInviteList</a>()
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> &<a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a><a class="code" href="classuserrec.html#CloseSocket_28_29">00093</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">userrec::CloseSocket</a>()
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 shutdown(this->fd,2);
+<a name="l00096"></a>00096 close(this->fd);
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a><a class="code" href="classuserrec.html#GetFullHost_28_29">00099</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">userrec::GetFullHost</a>()
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
+<a name="l00102"></a>00102 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> result;
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a><a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">00106</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">userrec::ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (this->fd > -1)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> read(this->fd, buffer, size);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
<a name="l00113"></a>00113 }
<a name="l00114"></a>00114
-<a name="l00115"></a><a class="code" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">00115</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">userrec::InviteTo</a>(<span class="keywordtype">char</span>* channel)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <a class="code" href="classInvited.html">Invited</a> i;
-<a name="l00118"></a>00118 strlcpy(i.<a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>,channel,CHANMAX);
-<a name="l00119"></a>00119 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a><a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">00122</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">userrec::RemoveInvite</a>(<span class="keywordtype">char</span>* channel)
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (channel)
+<a name="l00115"></a>00115
+<a name="l00116"></a><a class="code" href="classuserrec.html#GetFullRealHost_28_29">00116</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">userrec::GetFullRealHost</a>()
+<a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
+<a name="l00119"></a>00119 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> fresult;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a><a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">00123</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">userrec::IsInvited</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &channel)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (i->channel)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (!strcasecmp(i->channel,channel))
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
-<a name="l00136"></a>00136 <span class="keywordflow">return</span>;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a><a class="code" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">00144</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">userrec::HasPermission</a>(<span class="keywordtype">char</span>* command)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-<a name="l00147"></a>00147 <span class="keywordtype">char</span>* mycmd;
-<a name="l00148"></a>00148 <span class="keywordtype">char</span>* savept;
-<a name="l00149"></a>00149 <span class="keywordtype">char</span>* savept2;
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="comment">// users on u-lined servers can completely bypass</span>
-<a name="l00152"></a>00152 <span class="comment">// all permissions based checks.</span>
-<a name="l00153"></a>00153 <span class="comment">//</span>
-<a name="l00154"></a>00154 <span class="comment">// of course, if this is sent to a remote server and this</span>
-<a name="l00155"></a>00155 <span class="comment">// server is not ulined there, then that other server</span>
-<a name="l00156"></a>00156 <span class="comment">// silently drops the command.</span>
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this->server))
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="comment">// are they even an oper at all?</span>
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (strchr(this->modes,<span class="charliteral">'o'</span>))
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j < Config->ConfValueEnum(<span class="stringliteral">"type"</span>,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!strcmp(TypeName,this->oper))
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00169"></a>00169 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&savept);
-<a name="l00170"></a>00170 <span class="keywordflow">while</span> (myclass)
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k < Config->ConfValueEnum(<span class="stringliteral">"class"</span>,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00178"></a>00178 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&savept2);
-<a name="l00179"></a>00179 <span class="keywordflow">while</span> (mycmd)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command)) || (*mycmd == <span class="charliteral">'*'</span>))
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept2);
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept);
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197
-<a name="l00198"></a><a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">00198</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec::AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a)
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
-<a name="l00201"></a>00201 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < a.length(); i++)
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) && (a[i] != <span class="charliteral">'\0'</span>) && (a[i] != 7))
-<a name="l00203"></a>00203 b = b + a[i];
-<a name="l00204"></a>00204 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
-<a name="l00205"></a>00205 stream << b;
-<a name="l00206"></a>00206 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
-<a name="l00207"></a>00207 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
-<a name="l00208"></a>00208 <span class="comment">// count the size of the first line in the buffer.</span>
-<a name="l00209"></a>00209 <span class="keywordflow">while</span> (i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
-<a name="l00212"></a>00212 <span class="keywordflow">break</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() > (unsigned)this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
-<a name="l00217"></a>00217 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
-<a name="l00220"></a>00220 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> (i < 600);
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223
-<a name="l00224"></a><a class="code" href="classuserrec.html#BufferIsReady_28_29">00224</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">userrec::BufferIsReady</a>()
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
-<a name="l00228"></a>00228 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00229"></a>00229 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00232"></a><a class="code" href="classuserrec.html#ClearBuffer_28_29">00232</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">userrec::ClearBuffer</a>()
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00237"></a><a class="code" href="classuserrec.html#GetBuffer_28_29">00237</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">userrec::GetBuffer</a>()
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00241"></a>00241 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
-<a name="l00242"></a>00242 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
-<a name="l00243"></a>00243 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) && (strlen(line)))
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 ret = ret + *line;
-<a name="l00246"></a>00246 line++;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
-<a name="l00249"></a>00249 line++;
-<a name="l00250"></a>00250 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> ret;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a><a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">00254</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">userrec::AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">if</span> (this->GetWriteError() != <span class="stringliteral">""</span>)
-<a name="l00257"></a>00257 <span class="keywordflow">return</span>;
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() > (unsigned)this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
-<a name="l00261"></a>00261 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
-<a name="l00262"></a>00262 <span class="keywordflow">return</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 std::stringstream stream;
-<a name="l00265"></a>00265 stream << <a class="code" href="classuserrec.html#sendq">sendq</a> << data;
-<a name="l00266"></a>00266 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 <span class="comment">// send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it)</span>
-<a name="l00270"></a><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">00270</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">userrec::FlushWriteBuf</a>()
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-><a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
-<a name="l00275"></a>00275 <span class="keywordtype">int</span> n_sent = write(this->fd,tb,this->sendq.length());
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (n_sent == -1)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 <span class="keywordflow">else</span>
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="comment">// advance the queue</span>
-<a name="l00283"></a>00283 tb += n_sent;
-<a name="l00284"></a>00284 this-><a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
-<a name="l00285"></a>00285 <span class="comment">// update the user's stats counters</span>
-<a name="l00286"></a>00286 this-><a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
-<a name="l00287"></a>00287 this-><a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290 }
-<a name="l00291"></a>00291
-<a name="l00292"></a><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">00292</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec::SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error)
-<a name="l00293"></a>00293 {
-<a name="l00294"></a>00294 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this->nick,error.c_str());
-<a name="l00295"></a>00295 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
-<a name="l00296"></a>00296 <span class="keywordflow">if</span> (this->WriteError == <span class="stringliteral">""</span>)
-<a name="l00297"></a>00297 this-><a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299
-<a name="l00300"></a><a class="code" href="classuserrec.html#GetWriteError_28_29">00300</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">userrec::GetWriteError</a>()
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> this-><a class="code" href="classuserrec.html#WriteError">WriteError</a>;
-<a name="l00303"></a>00303 }
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00127"></a>00127 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i->channel;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a><a class="code" href="classuserrec.html#GetInviteList_28_29">00136</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">userrec::GetInviteList</a>()
+<a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> &<a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a><a class="code" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">00141</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">userrec::InviteTo</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &channel)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <a class="code" href="classInvited.html">Invited</a> i;
+<a name="l00144"></a>00144 i.<a class="code" href="classInvited.html#channel">channel</a> = channel;
+<a name="l00145"></a>00145 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147
+<a name="l00148"></a><a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">00148</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">userrec::RemoveInvite</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &channel)
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i->channel;
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
+<a name="l00159"></a>00159 <span class="keywordflow">return</span>;
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164
+<a name="l00165"></a><a class="code" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">00165</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">userrec::HasPermission</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &command)
+<a name="l00166"></a>00166 {
+<a name="l00167"></a>00167 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+<a name="l00168"></a>00168 <span class="keywordtype">char</span>* mycmd;
+<a name="l00169"></a>00169 <span class="keywordtype">char</span>* savept;
+<a name="l00170"></a>00170 <span class="keywordtype">char</span>* savept2;
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="comment">// users on u-lined servers can completely bypass</span>
+<a name="l00173"></a>00173 <span class="comment">// all permissions based checks.</span>
+<a name="l00174"></a>00174 <span class="comment">//</span>
+<a name="l00175"></a>00175 <span class="comment">// of course, if this is sent to a remote server and this</span>
+<a name="l00176"></a>00176 <span class="comment">// server is not ulined there, then that other server</span>
+<a name="l00177"></a>00177 <span class="comment">// silently drops the command.</span>
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this->server))
+<a name="l00179"></a>00179 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="comment">// are they even an oper at all?</span>
+<a name="l00182"></a>00182 <span class="keywordflow">if</span> (strchr(this->modes,<span class="charliteral">'o'</span>))
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j < Config->ConfValueEnum(<span class="stringliteral">"type"</span>,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (!strcmp(TypeName,this->oper))
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&savept);
+<a name="l00191"></a>00191 <span class="keywordflow">while</span> (myclass)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k < Config->ConfValueEnum(<span class="stringliteral">"class"</span>,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 Config-><a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&Config-><a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00199"></a>00199 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&savept2);
+<a name="l00200"></a>00200 <span class="keywordflow">while</span> (mycmd)
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == <span class="charliteral">'*'</span>))
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept2);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&savept);
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218
+<a name="l00219"></a><a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">00219</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec::AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
+<a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < a.length(); i++)
+<a name="l00223"></a>00223 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) && (a[i] != <span class="charliteral">'\0'</span>) && (a[i] != 7))
+<a name="l00224"></a>00224 b = b + a[i];
+<a name="l00225"></a>00225 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
+<a name="l00226"></a>00226 stream << b;
+<a name="l00227"></a>00227 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
+<a name="l00228"></a>00228 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
+<a name="l00229"></a>00229 <span class="comment">// count the size of the first line in the buffer.</span>
+<a name="l00230"></a>00230 <span class="keywordflow">while</span> (i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
+<a name="l00231"></a>00231 {
+<a name="l00232"></a>00232 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
+<a name="l00233"></a>00233 <span class="keywordflow">break</span>;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() > (unsigned)this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
+<a name="l00238"></a>00238 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-><a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
+<a name="l00241"></a>00241 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> (i < 600);
+<a name="l00243"></a>00243 }
+<a name="l00244"></a>00244
+<a name="l00245"></a><a class="code" href="classuserrec.html#BufferIsReady_28_29">00245</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">userrec::BufferIsReady</a>()
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00250"></a>00250 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a><a class="code" href="classuserrec.html#ClearBuffer_28_29">00253</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">userrec::ClearBuffer</a>()
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a><a class="code" href="classuserrec.html#GetBuffer_28_29">00258</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">userrec::GetBuffer</a>()
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
+<a name="l00261"></a>00261 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00262"></a>00262 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
+<a name="l00263"></a>00263 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
+<a name="l00264"></a>00264 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) && (strlen(line)))
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 ret = ret + *line;
+<a name="l00267"></a>00267 line++;
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
+<a name="l00270"></a>00270 line++;
+<a name="l00271"></a>00271 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> ret;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00275"></a><a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">00275</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">userrec::AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
+<a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (this->GetWriteError() != <span class="stringliteral">""</span>)
+<a name="l00278"></a>00278 <span class="keywordflow">return</span>;
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() > (unsigned)this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="comment">/* Fix by brain - Set the error text BEFORE calling writeopers, because</span>
+<a name="l00282"></a>00282 <span class="comment"> * if we dont it'll recursively call here over and over again trying</span>
+<a name="l00283"></a>00283 <span class="comment"> * to repeatedly add the text to the sendq!</span>
+<a name="l00284"></a>00284 <span class="comment"> */</span>
+<a name="l00285"></a>00285 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
+<a name="l00286"></a>00286 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this->nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-><a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
+<a name="l00287"></a>00287 <span class="keywordflow">return</span>;
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 std::stringstream stream;
+<a name="l00290"></a>00290 stream << <a class="code" href="classuserrec.html#sendq">sendq</a> << data;
+<a name="l00291"></a>00291 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
+<a name="l00292"></a>00292 }
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 <span class="comment">// send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it)</span>
+<a name="l00295"></a><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">00295</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">userrec::FlushWriteBuf</a>()
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-><a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
+<a name="l00300"></a>00300 <span class="keywordtype">int</span> n_sent = write(this->fd,tb,this->sendq.length());
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (n_sent == -1)
+<a name="l00302"></a>00302 {
+<a name="l00303"></a>00303 this-><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 <span class="keywordflow">else</span>
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="comment">// advance the queue</span>
+<a name="l00308"></a>00308 tb += n_sent;
+<a name="l00309"></a>00309 this-><a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
+<a name="l00310"></a>00310 <span class="comment">// update the user's stats counters</span>
+<a name="l00311"></a>00311 this-><a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
+<a name="l00312"></a>00312 this-><a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
+<a name="l00313"></a>00313 }
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315 }
+<a name="l00316"></a>00316
+<a name="l00317"></a><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">00317</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec::SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error)
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this->nick,error.c_str());
+<a name="l00320"></a>00320 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
+<a name="l00321"></a>00321 <span class="keywordflow">if</span> (this->WriteError == <span class="stringliteral">""</span>)
+<a name="l00322"></a>00322 this-><a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324
+<a name="l00325"></a><a class="code" href="classuserrec.html#GetWriteError_28_29">00325</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">userrec::GetWriteError</a>()
+<a name="l00326"></a>00326 {
+<a name="l00327"></a>00327 <span class="keywordflow">return</span> this-><a class="code" href="classuserrec.html#WriteError">WriteError</a>;
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329
+<a name="l00330"></a><a class="code" href="users_8h.html#AddOper_28userrec_20_2Auser_29">00330</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">AddOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper added to optimization list"</span>);
+<a name="l00333"></a>00333 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.push_back(user);
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335
+<a name="l00336"></a><a class="code" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">00336</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keywordflow">for</span> (std::vector<userrec*>::iterator a = <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.begin(); a < <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.end(); a++)
+<a name="l00339"></a>00339 {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (*a == user)
+<a name="l00341"></a>00341 {
+<a name="l00342"></a>00342 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper removed from optimization list"</span>);
+<a name="l00343"></a>00343 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.erase(a);
+<a name="l00344"></a>00344 <span class="keywordflow">return</span>;
+<a name="l00345"></a>00345 }
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348
+<a name="l00349"></a><a class="code" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">00349</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r)
+<a name="l00350"></a>00350 {
+<a name="l00351"></a>00351 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 strncpy(reason,r,MAXBUF);
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (strlen(reason)>MAXQUIT)
+<a name="l00358"></a>00358 {
+<a name="l00359"></a>00359 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00363"></a>00363 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00364"></a>00364 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00367"></a>00367 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00368"></a>00368 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 user-><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (Config-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>))
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 Config-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>)-><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00382"></a>00382 user-><a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="comment">// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything</span>
+<a name="l00386"></a>00386 <span class="comment">// if they were an oper with +s.</span>
+<a name="l00387"></a>00387 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00388"></a>00388 purge_empty_chans(user);
+<a name="l00389"></a>00389 <span class="comment">// fix by brain: only show local quits because we only show local connects (it just makes SENSE)</span>
+<a name="l00390"></a>00390 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00391"></a>00391 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client exiting: %s!%s@%s [%s]"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(user);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00398"></a>00398 <span class="keywordflow">if</span> (user->fd > -1)
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 fd_ref_table[user->fd] = NULL;
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00404"></a>00404 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keyword">delete</span> user;
+<a name="l00410"></a>00410 }
+<a name="l00411"></a>00411
+<a name="l00412"></a><a class="code" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">00412</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r)
+<a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 strncpy(reason,r,MAXBUF);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (strlen(reason)>MAXQUIT)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00426"></a>00426 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 user-><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00432"></a>00432 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (Config-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>))
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 Config-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>)-><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00445"></a>00445 user-><a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00449"></a>00449 purge_empty_chans(user);
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00453"></a>00453 {
+<a name="l00454"></a>00454 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (user->fd > -1)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 fd_ref_table[user->fd] = NULL;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00459"></a>00459 {
+<a name="l00460"></a>00460 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00461"></a>00461 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 <span class="keyword">delete</span> user;
+<a name="l00467"></a>00467 }
+<a name="l00468"></a>00468
+<a name="l00469"></a>00469
+<a name="l00470"></a>00470 <span class="comment">/* adds or updates an entry in the whowas list */</span>
+<a name="l00471"></a><a class="code" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">00471</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(<a class="code" href="classuserrec.html">userrec</a>* u)
+<a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 whowas_hash::iterator iter = <a class="code" href="users_8cpp.html#whowas">whowas</a>.find(u-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00474"></a>00474 <a class="code" href="classWhoWasUser.html">WhoWasUser</a> *a = <span class="keyword">new</span> <a class="code" href="classWhoWasUser.html">WhoWasUser</a>();
+<a name="l00475"></a>00475 strlcpy(a-><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>,u-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00476"></a>00476 strlcpy(a-><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>,u-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,IDENTMAX);
+<a name="l00477"></a>00477 strlcpy(a-><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>,u-><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,160);
+<a name="l00478"></a>00478 strlcpy(a-><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>,u-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,160);
+<a name="l00479"></a>00479 strlcpy(a-><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,u-><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,MAXGECOS);
+<a name="l00480"></a>00480 strlcpy(a-><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>,u-><a class="code" href="classuserrec.html#server">server</a>,256);
+<a name="l00481"></a>00481 a-><a class="code" href="classWhoWasUser.html#signon">signon</a> = u-><a class="code" href="classconnection.html#signon">signon</a>;
+<a name="l00482"></a>00482
+<a name="l00483"></a>00483 <span class="comment">/* MAX_WHOWAS: max number of /WHOWAS items</span>
+<a name="l00484"></a>00484 <span class="comment"> * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and</span>
+<a name="l00485"></a>00485 <span class="comment"> * can be replaced by a newer one</span>
+<a name="l00486"></a>00486 <span class="comment"> */</span>
+<a name="l00487"></a>00487
+<a name="l00488"></a>00488 <span class="keywordflow">if</span> (iter == <a class="code" href="users_8cpp.html#whowas">whowas</a>.end())
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (<a class="code" href="users_8cpp.html#whowas">whowas</a>.size() >= (unsigned)<a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (whowas_hash::iterator i = <a class="code" href="users_8cpp.html#whowas">whowas</a>.begin(); i != <a class="code" href="users_8cpp.html#whowas">whowas</a>.end(); i++)
+<a name="l00493"></a>00493 {
+<a name="l00494"></a>00494 <span class="comment">// 3600 seconds in an hour ;)</span>
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> ((i->second->signon)<(<a class="code" href="channels_8cpp.html#TIME">TIME</a>-(<a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>*3600)))
+<a name="l00496"></a>00496 {
+<a name="l00497"></a>00497 <span class="comment">// delete the old one</span>
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (i->second) <span class="keyword">delete</span> i->second;
+<a name="l00499"></a>00499 <span class="comment">// replace with new one</span>
+<a name="l00500"></a>00500 i->second = a;
+<a name="l00501"></a>00501 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added WHOWAS entry, purged an old record"</span>);
+<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 <span class="comment">// no space left and user doesnt exist. Don't leave ram in use!</span>
+<a name="l00506"></a>00506 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"</span>);
+<a name="l00507"></a>00507 <span class="keyword">delete</span> a;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 <span class="keywordflow">else</span>
+<a name="l00510"></a>00510 {
+<a name="l00511"></a>00511 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added fresh WHOWAS entry"</span>);
+<a name="l00512"></a>00512 <a class="code" href="users_8cpp.html#whowas">whowas</a>[a-><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>] = a;
+<a name="l00513"></a>00513 }
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515 <span class="keywordflow">else</span>
+<a name="l00516"></a>00516 {
+<a name="l00517"></a>00517 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"updated WHOWAS entry"</span>);
+<a name="l00518"></a>00518 <span class="keywordflow">if</span> (iter->second) <span class="keyword">delete</span> iter->second;
+<a name="l00519"></a>00519 iter->second = a;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 }
+<a name="l00522"></a>00522
+<a name="l00523"></a>00523 <span class="comment">/* add a client connection to the sockets list */</span>
+<a name="l00524"></a><a class="code" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">00524</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a>(<span class="keywordtype">int</span> socket, <span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> iscached, <span class="keywordtype">char</span>* ip)
+<a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="namespaceirc.html#string">string</a> tempnick;
+<a name="l00527"></a>00527 <span class="keywordtype">char</span> tn2[MAXBUF];
+<a name="l00528"></a>00528 user_hash::iterator iter;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 tempnick = <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(socket) + <span class="stringliteral">"-unknown"</span>;
+<a name="l00531"></a>00531 sprintf(tn2,<span class="stringliteral">"%lu-unknown"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(tempnick);
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 <span class="comment">// fix by brain.</span>
+<a name="l00536"></a>00536 <span class="comment">// as these nicknames are 'RFC impossible', we can be sure nobody is going to be</span>
+<a name="l00537"></a>00537 <span class="comment">// using one as a registered connection. As theyre per fd, we can also safely assume</span>
+<a name="l00538"></a>00538 <span class="comment">// that we wont have collisions. Therefore, if the nick exists in the list, its only</span>
+<a name="l00539"></a>00539 <span class="comment">// used by a dead socket, erase the iterator so that the new client may reclaim it.</span>
+<a name="l00540"></a>00540 <span class="comment">// this was probably the cause of 'server ignores me when i hammer it with reconnects'</span>
+<a name="l00541"></a>00541 <span class="comment">// issue in earlier alphas/betas</span>
+<a name="l00542"></a>00542 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00543"></a>00543 {
+<a name="l00544"></a>00544 <a class="code" href="classuserrec.html">userrec</a>* goner = iter->second;
+<a name="l00545"></a>00545 <span class="keyword">delete</span> goner;
+<a name="l00546"></a>00546 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">/*</span>
+<a name="l00550"></a>00550 <span class="comment"> * It is OK to access the value here this way since we know</span>
+<a name="l00551"></a>00551 <span class="comment"> * it exists, we just created it above.</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * At NO other time should you access a value in a map or a</span>
+<a name="l00554"></a>00554 <span class="comment"> * hash_map this way.</span>
+<a name="l00555"></a>00555 <span class="comment"> */</span>
+<a name="l00556"></a>00556 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick] = <span class="keyword">new</span> <a class="code" href="classuserrec.html">userrec</a>();
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"AddClient: %lu %s %d %s"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket,host,port,ip);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->fd = socket;
+<a name="l00561"></a>00561 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->nick, tn2,NICKMAX);
+<a name="l00562"></a>00562 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->host, host,160);
+<a name="l00563"></a>00563 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->dhost, host,160);
+<a name="l00564"></a>00564 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->server = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00565"></a>00565 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->ident, <span class="stringliteral">"unknown"</span>,IDENTMAX);
+<a name="l00566"></a>00566 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->registered = 0;
+<a name="l00567"></a>00567 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->signon = <a class="code" href="channels_8cpp.html#TIME">TIME</a> + Config-><a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00568"></a>00568 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->lastping = 1;
+<a name="l00569"></a>00569 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->port = port;
+<a name="l00570"></a>00570 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->ip,ip,16);
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="comment">// set the registration timeout for this user</span>
+<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> class_regtimeout = 90;
+<a name="l00574"></a>00574 <span class="keywordtype">int</span> class_flood = 0;
+<a name="l00575"></a>00575 <span class="keywordtype">long</span> class_threshold = 5;
+<a name="l00576"></a>00576 <span class="keywordtype">long</span> class_sqmax = 262144; <span class="comment">// 256kb</span>
+<a name="l00577"></a>00577 <span class="keywordtype">long</span> class_rqmax = 4096; <span class="comment">// 4k</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="keywordflow">for</span> (ClassVector::iterator i = Config-><a class="code" href="classServerConfig.html#Classes">Classes</a>.begin(); i != Config-><a class="code" href="classServerConfig.html#Classes">Classes</a>.end(); i++)
+<a name="l00580"></a>00580 {
+<a name="l00581"></a>00581 <span class="keywordflow">if</span> (match(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->host,i->host) && (i->type == <a class="code" href="users_8h.html#CC_5FALLOW">CC_ALLOW</a>))
+<a name="l00582"></a>00582 {
+<a name="l00583"></a>00583 class_regtimeout = (<span class="keywordtype">unsigned</span> long)i->registration_timeout;
+<a name="l00584"></a>00584 class_flood = i->flood;
+<a name="l00585"></a>00585 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->pingmax = i->pingtime;
+<a name="l00586"></a>00586 class_threshold = i->threshold;
+<a name="l00587"></a>00587 class_sqmax = i->sendqmax;
+<a name="l00588"></a>00588 class_rqmax = i->recvqmax;
+<a name="l00589"></a>00589 <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591 }
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->nping = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->pingmax + Config-><a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00594"></a>00594 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->timeout = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+class_regtimeout;
+<a name="l00595"></a>00595 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->flood = class_flood;
+<a name="l00596"></a>00596 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->threshold = class_threshold;
+<a name="l00597"></a>00597 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->sendqmax = class_sqmax;
+<a name="l00598"></a>00598 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->recvqmax = class_rqmax;
+<a name="l00599"></a>00599
+<a name="l00600"></a>00600 <a class="code" href="classucrec.html">ucrec</a> a;
+<a name="l00601"></a>00601 a.<a class="code" href="classucrec.html#channel">channel</a> = NULL;
+<a name="l00602"></a>00602 a.<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
+<a name="l00603"></a>00603 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < MAXCHANS; i++)
+<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->chans.push_back(a);
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() > Config-><a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>)
+<a name="l00607"></a>00607 {
+<a name="l00608"></a>00608 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() >= MAXCLIENTS)
+<a name="l00613"></a>00613 {
+<a name="l00614"></a>00614 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00615"></a>00615 <span class="keywordflow">return</span>;
+<a name="l00616"></a>00616 }
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// this is done as a safety check to keep the file descriptors within range of fd_ref_table.</span>
+<a name="l00619"></a>00619 <span class="comment">// its a pretty big but for the moment valid assumption:</span>
+<a name="l00620"></a>00620 <span class="comment">// file descriptors are handed out starting at 0, and are recycled as theyre freed.</span>
+<a name="l00621"></a>00621 <span class="comment">// therefore if there is ever an fd over 65535, 65536 clients must be connected to the</span>
+<a name="l00622"></a>00622 <span class="comment">// irc server at once (or the irc server otherwise initiating this many connections, files etc)</span>
+<a name="l00623"></a>00623 <span class="comment">// which for the time being is a physical impossibility (even the largest networks dont have more</span>
+<a name="l00624"></a>00624 <span class="comment">// than about 10,000 users on ONE server!)</span>
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)socket > 65534)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],<span class="stringliteral">"Server is full"</span>);
+<a name="l00628"></a>00628 <span class="keywordflow">return</span>;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(ip);
+<a name="l00631"></a>00631 <span class="keywordflow">if</span> (!e)
+<a name="l00632"></a>00632 {
+<a name="l00633"></a>00633 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline</a>(ip);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (r)
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00637"></a>00637 snprintf(reason,MAXBUF,<span class="stringliteral">"Z-Lined: %s"</span>,r);
+<a name="l00638"></a>00638 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],reason);
+<a name="l00639"></a>00639 <span class="keywordflow">return</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 fd_ref_table[socket] = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick];
+<a name="l00643"></a>00643 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.push_back(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]);
+<a name="l00644"></a>00644 ServerInstance-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(socket,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FCLIENT">X_ESTAB_CLIENT</a>);
+<a name="l00645"></a>00645 }
+<a name="l00646"></a>00646
+<a name="l00647"></a><a class="code" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">00647</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00648"></a>00648 {
+<a name="l00649"></a>00649 ServerInstance-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsConnects">statsConnects</a>++;
+<a name="l00650"></a>00650 user-><a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00651"></a>00651 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ConnectUser: %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keywordflow">if</span> ((strcmp(Passwd(user),<span class="stringliteral">""</span>)) && (!user-><a class="code" href="classconnection.html#haspassed">haspassed</a>))
+<a name="l00654"></a>00654 {
+<a name="l00655"></a>00655 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Invalid password"</span>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span>;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 <span class="keywordflow">if</span> (IsDenied(user))
+<a name="l00659"></a>00659 {
+<a name="l00660"></a>00660 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Unauthorised connection"</span>);
+<a name="l00661"></a>00661 <span class="keywordflow">return</span>;
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a>00664 <span class="keywordtype">char</span> match_against[MAXBUF];
+<a name="l00665"></a>00665 snprintf(match_against,MAXBUF,<span class="stringliteral">"%s@%s"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00666"></a>00666 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(match_against);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (!e)
+<a name="l00668"></a>00668 {
+<a name="l00669"></a>00669 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline</a>(match_against);
+<a name="l00670"></a>00670 <span class="keywordflow">if</span> (r)
+<a name="l00671"></a>00671 {
+<a name="l00672"></a>00672 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00673"></a>00673 snprintf(reason,MAXBUF,<span class="stringliteral">"G-Lined: %s"</span>,r);
+<a name="l00674"></a>00674 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00675"></a>00675 <span class="keywordflow">return</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 r = <a class="code" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline</a>(user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r)
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00681"></a>00681 snprintf(reason,MAXBUF,<span class="stringliteral">"K-Lined: %s"</span>,r);
+<a name="l00682"></a>00682 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00683"></a>00683 <span class="keywordflow">return</span>;
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 }
+<a name="l00686"></a>00686
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE Auth :Welcome to \002%s\002!"</span>,Config-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>);
+<a name="l00689"></a>00689 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"001 %s :Welcome to the %s IRC Network %s!%s@%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,Config-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00690"></a>00690 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"002 %s :Your host is %s, running version %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00691"></a>00691 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"003 %s :This server was created %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,__TIME__,__DATE__);
+<a name="l00692"></a>00692 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,Config-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00693"></a>00693 <span class="comment">// the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...</span>
+<a name="l00694"></a>00694 std::stringstream v;
+<a name="l00695"></a>00695 v << <span class="stringliteral">"WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS="</span> << MAXCHANS;
+<a name="l00696"></a>00696 v << <span class="stringliteral">" MAXBANS=60 NICKLEN="</span> << NICKMAX;
+<a name="l00697"></a>00697 v << <span class="stringliteral">" TOPICLEN="</span> << MAXTOPIC << <span class="stringliteral">" KICKLEN="</span> << MAXKICK << <span class="stringliteral">" MAXTARGETS=20 AWAYLEN="</span> << MAXAWAY << <span class="stringliteral">" CHANMODES=ohvb,k,l,psmnti NETWORK="</span>;
+<a name="l00698"></a>00698 v << Config-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00699"></a>00699 <a class="code" href="namespaceirc.html#string">std::string</a> data005 = v.str();
+<a name="l00700"></a>00700 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> On005Numeric(data005);
+<a name="l00701"></a>00701 <span class="comment">// anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...</span>
+<a name="l00702"></a>00702 <span class="comment">// so i'd better split it :)</span>
+<a name="l00703"></a>00703 std::stringstream out(data005);
+<a name="l00704"></a>00704 <a class="code" href="namespaceirc.html#string">std::string</a> token = <span class="stringliteral">""</span>;
+<a name="l00705"></a>00705 <a class="code" href="namespaceirc.html#string">std::string</a> line5 = <span class="stringliteral">""</span>;
+<a name="l00706"></a>00706 <span class="keywordtype">int</span> token_counter = 0;
+<a name="l00707"></a>00707 <span class="keywordflow">while</span> (!out.eof())
+<a name="l00708"></a>00708 {
+<a name="l00709"></a>00709 out >> token;
+<a name="l00710"></a>00710 line5 = line5 + token + <span class="stringliteral">" "</span>;
+<a name="l00711"></a>00711 token_counter++;
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> ((token_counter >= 13) || (out.eof() == <span class="keyword">true</span>))
+<a name="l00713"></a>00713 {
+<a name="l00714"></a>00714 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"005 %s %s:are supported by this server"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,line5.c_str());
+<a name="l00715"></a>00715 line5 = <span class="stringliteral">""</span>;
+<a name="l00716"></a>00716 token_counter = 0;
+<a name="l00717"></a>00717 }
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 ShowMOTD(user);
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="comment">// fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out</span>
+<a name="l00722"></a>00722 <span class="comment">// onto the network and produce 'fake direction'</span>
+<a name="l00723"></a>00723 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserConnect(user);
+<a name="l00724"></a>00724 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnGlobalConnect(user);
+<a name="l00725"></a>00725 user-><a class="code" href="classconnection.html#registered">registered</a> = 7;
+<a name="l00726"></a>00726 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client connecting on port %lu: %s!%s@%s [%s]"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#port">port</a>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,user-><a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>);
+<a name="l00727"></a>00727 }
+<a name="l00728"></a>00728
+<a name="l00729"></a>00729
+<a name="l00730"></a>00730 <span class="comment">/* shows the message of the day, and any other on-logon stuff */</span>
+<a name="l00731"></a><a class="code" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">00731</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a> *user)
+<a name="l00732"></a>00732 {
+<a name="l00733"></a>00733 <span class="comment">// dns is already done, things are fast. no need to wait for dns to complete just pass them straight on</span>
+<a name="l00734"></a>00734 <span class="keywordflow">if</span> ((user-><a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>) && (user-><a class="code" href="classconnection.html#registered">registered</a> >= 3) && (AllModulesReportReady(user)))
+<a name="l00735"></a>00735 {
+<a name="l00736"></a>00736 <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(user);
+<a name="l00737"></a>00737 }
+<a name="l00738"></a>00738 }
+<a name="l00739"></a>00739
+<a name="l00740"></a>00740 <span class="comment">/* re-allocates a nick in the user_hash after they change nicknames,</span>
+<a name="l00741"></a>00741 <span class="comment"> * returns a pointer to the new user as it may have moved */</span>
+<a name="l00742"></a>00742
+<a name="l00743"></a><a class="code" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">00743</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a>(<span class="keywordtype">char</span>* Old, <span class="keywordtype">char</span>* New)
+<a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="comment">//user_hash::iterator newnick;</span>
+<a name="l00746"></a>00746 user_hash::iterator oldnick = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(Old);
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: %s %s"</span>,Old,New);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (!strcasecmp(Old,New))
+<a name="l00751"></a>00751 {
+<a name="l00752"></a>00752 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"old nick is new nick, skipping"</span>);
+<a name="l00753"></a>00753 <span class="keywordflow">return</span> oldnick->second;
+<a name="l00754"></a>00754 }
+<a name="l00755"></a>00755
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (oldnick == <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end()) <span class="keywordflow">return</span> NULL; <span class="comment">/* doesnt exist */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Found hashed nick %s"</span>,Old);
+<a name="l00759"></a>00759
+<a name="l00760"></a>00760 <a class="code" href="classuserrec.html">userrec</a>* olduser = oldnick->second;
+<a name="l00761"></a>00761 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New] = olduser;
+<a name="l00762"></a>00762 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(oldnick);
+<a name="l00763"></a>00763
+<a name="l00764"></a>00764 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Nick rehashed as %s"</span>,New);
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New];
+<a name="l00767"></a>00767 }
+<a name="l00768"></a>00768
+<a name="l00769"></a><a class="code" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">00769</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keyword">const</span> <span class="keywordtype">char</span>* newnick)
+<a name="l00770"></a>00770 {
+<a name="l00771"></a>00771 <span class="keywordtype">char</span> nick[MAXBUF];
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00773"></a>00773
+<a name="l00774"></a>00774 strcpy(nick,<span class="stringliteral">""</span>);
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreNick(user,newnick));
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (MOD_RESULT) {
+<a name="l00778"></a>00778 ServerInstance-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00779"></a>00779 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00780"></a>00780 <span class="keywordflow">return</span>;
+<a name="l00781"></a>00781 }
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (<a class="code" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline</a>(newnick))
+<a name="l00783"></a>00783 {
+<a name="l00784"></a>00784 ServerInstance-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00785"></a>00785 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00786"></a>00786 <span class="keywordflow">return</span>;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (user)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 <span class="keywordflow">if</span> (newnick)
+<a name="l00792"></a>00792 {
+<a name="l00793"></a>00793 strncpy(nick,newnick,MAXBUF);
+<a name="l00794"></a>00794 }
+<a name="l00795"></a>00795 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7)
+<a name="l00796"></a>00796 {
+<a name="l00797"></a>00797 <span class="keywordtype">char</span>* pars[1];
+<a name="l00798"></a>00798 pars[0] = nick;
+<a name="l00799"></a>00799 <a class="code" href="namespaceirc.html#string">std::string</a> cmd = <span class="stringliteral">"NICK"</span>;
+<a name="l00800"></a>00800 ServerInstance-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CallHandler(cmd,pars,1,user);
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 }
+<a name="l00803"></a>00803 }
+<a name="l00804"></a>00804
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include "inspstring.h"</code><br>
<code>#include "<a class="el" href="commands_8h-source.html">commands.h</a>"</code><br>
<code>#include "helperfuncs.h"</code><br>
+<code>#include "<a class="el" href="typedefs_8h-source.html">typedefs.h</a>"</code><br>
+<code>#include "<a class="el" href="socketengine_8h-source.html">socketengine.h</a>"</code><br>
+<code>#include "<a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>"</code><br>
+<code>#include "<a class="el" href="message_8h-source.html">message.h</a>"</code><br>
+<code>#include "wildcard.h"</code><br>
+<code>#include "<a class="el" href="xline_8h-source.html">xline.h</a>"</code><br>
<p>
Include dependency graph for users.cpp:<p><center><img src="users_8cpp__incl.gif" border="0" usemap="#users.cpp_map" alt=""></center>
<map name="users.cpp_map">
-<area href="channels_8h-source.html" shape="rect" coords="408,159,493,185" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="401,108,500,135" alt="">
-<area href="users_8h-source.html" shape="rect" coords="288,209,352,236" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="147,260,227,287" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="137,159,236,185" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="600,640,685,667" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="593,260,692,287" alt="">
+<area href="users_8h-source.html" shape="rect" coords="457,564,521,591" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="596,438,689,464" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="296,210,376,236" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="433,159,545,186" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="287,716,385,743" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="144,412,229,439" alt="">
+<area href="message_8h-source.html" shape="rect" coords="293,666,379,692" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="305,767,367,794" alt="">
</map>
<p>
<a href="users_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">string</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a> (const T &in)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">AddOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a> (<a class="el" href="classuserrec.html">userrec</a> *u)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a> (int socket, char *host, int port, bool iscached, char *ip)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a> (char *Old, char *New)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *newnick)</td></tr>
+
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classServerConfig.html">ServerConfig</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#Config">Config</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="classModule.html">Module</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#modules">modules</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#factory">factory</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="classInspSocket.html">InspSocket</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#module_5Fsockets">module_sockets</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspSocket.html">InspSocket</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a> [65535]</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#TIME">TIME</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a> [65536]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classServerConfig.html">ServerConfig</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#Config">Config</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#clientlist">clientlist</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#whowas">whowas</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="classuserrec.html">userrec</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#local_5Fusers">local_users</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="classuserrec.html">userrec</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#all_5Fopers">all_opers</a></td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29"></a><!-- doxytag: member="users.cpp::AddClient" ref="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29" args="(int socket, char *host, int port, bool iscached, char *ip)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddClient </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">int </td>
+ <td class="mdname" nowrap> <em>socket</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>host</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int </td>
+ <td class="mdname" nowrap> <em>port</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>bool </td>
+ <td class="mdname" nowrap> <em>iscached</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>ip</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00524">524</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8h-source.html#l00036">CC_ALLOW</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00243">ServerConfig::Classes</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00056">ConvToStr()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00177">ServerConfig::dns_timeout</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd__io_8h-source.html#l00194">ServerConfig::SoftLimit</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, and <a class="el" href="socketengine_8h-source.html#l00043">X_ESTAB_CLIENT</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="namespaceirc.html#string">string</a> tempnick;
+<a name="l00527"></a>00527 <span class="keywordtype">char</span> tn2[MAXBUF];
+<a name="l00528"></a>00528 user_hash::iterator iter;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 tempnick = <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(socket) + <span class="stringliteral">"-unknown"</span>;
+<a name="l00531"></a>00531 sprintf(tn2,<span class="stringliteral">"%lu-unknown"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(tempnick);
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 <span class="comment">// fix by brain.</span>
+<a name="l00536"></a>00536 <span class="comment">// as these nicknames are 'RFC impossible', we can be sure nobody is going to be</span>
+<a name="l00537"></a>00537 <span class="comment">// using one as a registered connection. As theyre per fd, we can also safely assume</span>
+<a name="l00538"></a>00538 <span class="comment">// that we wont have collisions. Therefore, if the nick exists in the list, its only</span>
+<a name="l00539"></a>00539 <span class="comment">// used by a dead socket, erase the iterator so that the new client may reclaim it.</span>
+<a name="l00540"></a>00540 <span class="comment">// this was probably the cause of 'server ignores me when i hammer it with reconnects'</span>
+<a name="l00541"></a>00541 <span class="comment">// issue in earlier alphas/betas</span>
+<a name="l00542"></a>00542 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00543"></a>00543 {
+<a name="l00544"></a>00544 <a class="code" href="classuserrec.html">userrec</a>* goner = iter->second;
+<a name="l00545"></a>00545 <span class="keyword">delete</span> goner;
+<a name="l00546"></a>00546 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">/*</span>
+<a name="l00550"></a>00550 <span class="comment"> * It is OK to access the value here this way since we know</span>
+<a name="l00551"></a>00551 <span class="comment"> * it exists, we just created it above.</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * At NO other time should you access a value in a map or a</span>
+<a name="l00554"></a>00554 <span class="comment"> * hash_map this way.</span>
+<a name="l00555"></a>00555 <span class="comment"> */</span>
+<a name="l00556"></a>00556 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick] = <span class="keyword">new</span> <a class="code" href="classuserrec.html">userrec</a>();
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"AddClient: %lu %s %d %s"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket,host,port,ip);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->fd = socket;
+<a name="l00561"></a>00561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
+<a name="l00562"></a>00562 strlcpy(clientlist[tempnick]->host, host,160);
+<a name="l00563"></a>00563 strlcpy(clientlist[tempnick]->dhost, host,160);
+<a name="l00564"></a>00564 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->server = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00565"></a>00565 strlcpy(clientlist[tempnick]->ident, <span class="stringliteral">"unknown"</span>,IDENTMAX);
+<a name="l00566"></a>00566 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->registered = 0;
+<a name="l00567"></a>00567 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->signon = <a class="code" href="channels_8cpp.html#TIME">TIME</a> + <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00568"></a>00568 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->lastping = 1;
+<a name="l00569"></a>00569 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->port = port;
+<a name="l00570"></a>00570 strlcpy(clientlist[tempnick]->ip,ip,16);
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="comment">// set the registration timeout for this user</span>
+<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> class_regtimeout = 90;
+<a name="l00574"></a>00574 <span class="keywordtype">int</span> class_flood = 0;
+<a name="l00575"></a>00575 <span class="keywordtype">long</span> class_threshold = 5;
+<a name="l00576"></a>00576 <span class="keywordtype">long</span> class_sqmax = 262144; <span class="comment">// 256kb</span>
+<a name="l00577"></a>00577 <span class="keywordtype">long</span> class_rqmax = 4096; <span class="comment">// 4k</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="keywordflow">for</span> (ClassVector::iterator i = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Classes">Classes</a>.begin(); i != <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Classes">Classes</a>.end(); i++)
+<a name="l00580"></a>00580 {
+<a name="l00581"></a>00581 <span class="keywordflow">if</span> (match(clientlist[tempnick]->host,i->host) && (i->type == <a class="code" href="users_8h.html#CC_5FALLOW">CC_ALLOW</a>))
+<a name="l00582"></a>00582 {
+<a name="l00583"></a>00583 class_regtimeout = (<span class="keywordtype">unsigned</span> long)i->registration_timeout;
+<a name="l00584"></a>00584 class_flood = i->flood;
+<a name="l00585"></a>00585 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->pingmax = i->pingtime;
+<a name="l00586"></a>00586 class_threshold = i->threshold;
+<a name="l00587"></a>00587 class_sqmax = i->sendqmax;
+<a name="l00588"></a>00588 class_rqmax = i->recvqmax;
+<a name="l00589"></a>00589 <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591 }
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->nping = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->pingmax + <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00594"></a>00594 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->timeout = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+class_regtimeout;
+<a name="l00595"></a>00595 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->flood = class_flood;
+<a name="l00596"></a>00596 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->threshold = class_threshold;
+<a name="l00597"></a>00597 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->sendqmax = class_sqmax;
+<a name="l00598"></a>00598 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->recvqmax = class_rqmax;
+<a name="l00599"></a>00599
+<a name="l00600"></a>00600 <a class="code" href="classucrec.html">ucrec</a> a;
+<a name="l00601"></a>00601 a.<a class="code" href="classucrec.html#channel">channel</a> = NULL;
+<a name="l00602"></a>00602 a.<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
+<a name="l00603"></a>00603 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < MAXCHANS; i++)
+<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->chans.push_back(a);
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() > <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>)
+<a name="l00607"></a>00607 {
+<a name="l00608"></a>00608 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() >= MAXCLIENTS)
+<a name="l00613"></a>00613 {
+<a name="l00614"></a>00614 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00615"></a>00615 <span class="keywordflow">return</span>;
+<a name="l00616"></a>00616 }
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// this is done as a safety check to keep the file descriptors within range of fd_ref_table.</span>
+<a name="l00619"></a>00619 <span class="comment">// its a pretty big but for the moment valid assumption:</span>
+<a name="l00620"></a>00620 <span class="comment">// file descriptors are handed out starting at 0, and are recycled as theyre freed.</span>
+<a name="l00621"></a>00621 <span class="comment">// therefore if there is ever an fd over 65535, 65536 clients must be connected to the</span>
+<a name="l00622"></a>00622 <span class="comment">// irc server at once (or the irc server otherwise initiating this many connections, files etc)</span>
+<a name="l00623"></a>00623 <span class="comment">// which for the time being is a physical impossibility (even the largest networks dont have more</span>
+<a name="l00624"></a>00624 <span class="comment">// than about 10,000 users on ONE server!)</span>
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)socket > 65534)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"Server is full"</span>);
+<a name="l00628"></a>00628 <span class="keywordflow">return</span>;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(ip);
+<a name="l00631"></a>00631 <span class="keywordflow">if</span> (!e)
+<a name="l00632"></a>00632 {
+<a name="l00633"></a>00633 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline</a>(ip);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (r)
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00637"></a>00637 snprintf(reason,MAXBUF,<span class="stringliteral">"Z-Lined: %s"</span>,r);
+<a name="l00638"></a>00638 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],reason);
+<a name="l00639"></a>00639 <span class="keywordflow">return</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[socket] = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick];
+<a name="l00643"></a>00643 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.push_back(clientlist[tempnick]);
+<a name="l00644"></a>00644 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(socket,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FCLIENT">X_ESTAB_CLIENT</a>);
+<a name="l00645"></a>00645 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::AddOper" ref="AddOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddOper </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00330">330</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper added to optimization list"</span>);
+<a name="l00333"></a>00333 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.push_back(user);
+<a name="l00334"></a>00334 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddWhoWas_28userrec_20_2Au_29"></a><!-- doxytag: member="users.cpp::AddWhoWas" ref="AddWhoWas_28userrec_20_2Au_29" args="(userrec *u)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddWhoWas </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>u</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00471">471</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="users_8h-source.html#l00341">WhoWasUser::dhost</a>, <a class="el" href="users_8h-source.html#l00138">userrec::dhost</a>, <a class="el" href="users_8h-source.html#l00343">WhoWasUser::fullname</a>, <a class="el" href="users_8h-source.html#l00142">userrec::fullname</a>, <a class="el" href="users_8h-source.html#l00342">WhoWasUser::host</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00340">WhoWasUser::ident</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00339">WhoWasUser::nick</a>, <a class="el" href="users_8h-source.html#l00344">WhoWasUser::server</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00345">WhoWasUser::signon</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="users_8cpp.html#whowas">whowas</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>, and <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 whowas_hash::iterator iter = <a class="code" href="users_8cpp.html#whowas">whowas</a>.find(u-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00474"></a>00474 <a class="code" href="classWhoWasUser.html">WhoWasUser</a> *a = <span class="keyword">new</span> <a class="code" href="classWhoWasUser.html">WhoWasUser</a>();
+<a name="l00475"></a>00475 strlcpy(a-><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>,u-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00476"></a>00476 strlcpy(a-><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>,u-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,IDENTMAX);
+<a name="l00477"></a>00477 strlcpy(a-><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>,u-><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,160);
+<a name="l00478"></a>00478 strlcpy(a-><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>,u-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,160);
+<a name="l00479"></a>00479 strlcpy(a-><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,u-><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,MAXGECOS);
+<a name="l00480"></a>00480 strlcpy(a-><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>,u-><a class="code" href="classuserrec.html#server">server</a>,256);
+<a name="l00481"></a>00481 a-><a class="code" href="classWhoWasUser.html#signon">signon</a> = u-><a class="code" href="classconnection.html#signon">signon</a>;
+<a name="l00482"></a>00482
+<a name="l00483"></a>00483 <span class="comment">/* MAX_WHOWAS: max number of /WHOWAS items</span>
+<a name="l00484"></a>00484 <span class="comment"> * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and</span>
+<a name="l00485"></a>00485 <span class="comment"> * can be replaced by a newer one</span>
+<a name="l00486"></a>00486 <span class="comment"> */</span>
+<a name="l00487"></a>00487
+<a name="l00488"></a>00488 <span class="keywordflow">if</span> (iter == <a class="code" href="users_8cpp.html#whowas">whowas</a>.end())
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (<a class="code" href="users_8cpp.html#whowas">whowas</a>.size() >= (unsigned)<a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (whowas_hash::iterator i = <a class="code" href="users_8cpp.html#whowas">whowas</a>.begin(); i != <a class="code" href="users_8cpp.html#whowas">whowas</a>.end(); i++)
+<a name="l00493"></a>00493 {
+<a name="l00494"></a>00494 <span class="comment">// 3600 seconds in an hour ;)</span>
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
+<a name="l00496"></a>00496 {
+<a name="l00497"></a>00497 <span class="comment">// delete the old one</span>
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (i->second) <span class="keyword">delete</span> i->second;
+<a name="l00499"></a>00499 <span class="comment">// replace with new one</span>
+<a name="l00500"></a>00500 i->second = a;
+<a name="l00501"></a>00501 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added WHOWAS entry, purged an old record"</span>);
+<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 <span class="comment">// no space left and user doesnt exist. Don't leave ram in use!</span>
+<a name="l00506"></a>00506 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"</span>);
+<a name="l00507"></a>00507 <span class="keyword">delete</span> a;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 <span class="keywordflow">else</span>
+<a name="l00510"></a>00510 {
+<a name="l00511"></a>00511 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added fresh WHOWAS entry"</span>);
+<a name="l00512"></a>00512 <a class="code" href="users_8cpp.html#whowas">whowas</a>[a-><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>] = a;
+<a name="l00513"></a>00513 }
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515 <span class="keywordflow">else</span>
+<a name="l00516"></a>00516 {
+<a name="l00517"></a>00517 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"updated WHOWAS entry"</span>);
+<a name="l00518"></a>00518 <span class="keywordflow">if</span> (iter->second) <span class="keyword">delete</span> iter->second;
+<a name="l00519"></a>00519 iter->second = a;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::ConnectUser" ref="ConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void ConnectUser </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00731">731</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00185">userrec::dns_done</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>.<div class="fragment"><pre class="fragment"><a name="l00732"></a>00732 {
+<a name="l00733"></a>00733 <span class="comment">// dns is already done, things are fast. no need to wait for dns to complete just pass them straight on</span>
+<a name="l00734"></a>00734 <span class="keywordflow">if</span> ((user-><a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>) && (user-><a class="code" href="classconnection.html#registered">registered</a> >= 3) && (AllModulesReportReady(user)))
+<a name="l00735"></a>00735 {
+<a name="l00736"></a>00736 <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(user);
+<a name="l00737"></a>00737 }
+<a name="l00738"></a>00738 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConvToStr_28const_20T_20_26in_29"></a><!-- doxytag: member="users.cpp::ConvToStr" ref="ConvToStr_28const_20T_20_26in_29" args="(const T &in)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="mdPrefix" colspan="4">
+template<typename T> </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">string</a> ConvToStr </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">const T & </td>
+ <td class="mdname1" valign="top" nowrap> <em>in</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00056">56</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>.<div class="fragment"><pre class="fragment"><a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 stringstream tmp;
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!(tmp << in)) <span class="keywordflow">return</span> <a class="code" href="namespaceirc.html#string">string</a>();
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> tmp.str();
+<a name="l00061"></a>00061 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="DeleteOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::DeleteOper" ref="DeleteOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void DeleteOper </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00336">336</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keywordflow">for</span> (std::vector<userrec*>::iterator a = <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.begin(); a < <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.end(); a++)
+<a name="l00339"></a>00339 {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (*a == user)
+<a name="l00341"></a>00341 {
+<a name="l00342"></a>00342 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper removed from optimization list"</span>);
+<a name="l00343"></a>00343 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.erase(a);
+<a name="l00344"></a>00344 <span class="keywordflow">return</span>;
+<a name="l00345"></a>00345 }
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29"></a><!-- doxytag: member="users.cpp::force_nickchange" ref="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29" args="(userrec *user, const char *newnick)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void force_nickchange </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>newnick</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00769">769</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline()</a>, <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, and <a class="el" href="inspircd_8h-source.html#l00080">serverstats::statsCollisions</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00385">Server::ChangeUserNick()</a>.<div class="fragment"><pre class="fragment"><a name="l00770"></a>00770 {
+<a name="l00771"></a>00771 <span class="keywordtype">char</span> nick[MAXBUF];
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00773"></a>00773
+<a name="l00774"></a>00774 strcpy(nick,<span class="stringliteral">""</span>);
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreNick(user,newnick));
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (MOD_RESULT) {
+<a name="l00778"></a>00778 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00779"></a>00779 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00780"></a>00780 <span class="keywordflow">return</span>;
+<a name="l00781"></a>00781 }
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (<a class="code" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline</a>(newnick))
+<a name="l00783"></a>00783 {
+<a name="l00784"></a>00784 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00785"></a>00785 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00786"></a>00786 <span class="keywordflow">return</span>;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (user)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 <span class="keywordflow">if</span> (newnick)
+<a name="l00792"></a>00792 {
+<a name="l00793"></a>00793 strncpy(nick,newnick,MAXBUF);
+<a name="l00794"></a>00794 }
+<a name="l00795"></a>00795 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7)
+<a name="l00796"></a>00796 {
+<a name="l00797"></a>00797 <span class="keywordtype">char</span>* pars[1];
+<a name="l00798"></a>00798 pars[0] = nick;
+<a name="l00799"></a>00799 <a class="code" href="namespaceirc.html#string">std::string</a> cmd = <span class="stringliteral">"NICK"</span>;
+<a name="l00800"></a>00800 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CallHandler(cmd,pars,1,user);
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 }
+<a name="l00803"></a>00803 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="FullConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::FullConnectUser" ref="FullConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void FullConnectUser </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00647">647</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline()</a>, <a class="el" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline()</a>, <a class="el" href="inspircd__io_8h-source.html#l00075">ServerConfig::Network</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, <a class="el" href="inspircd_8h-source.html#l00084">serverstats::statsConnects</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00648"></a>00648 {
+<a name="l00649"></a>00649 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsConnects">statsConnects</a>++;
+<a name="l00650"></a>00650 user-><a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00651"></a>00651 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ConnectUser: %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keywordflow">if</span> ((strcmp(Passwd(user),<span class="stringliteral">""</span>)) && (!user-><a class="code" href="classconnection.html#haspassed">haspassed</a>))
+<a name="l00654"></a>00654 {
+<a name="l00655"></a>00655 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Invalid password"</span>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span>;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 <span class="keywordflow">if</span> (IsDenied(user))
+<a name="l00659"></a>00659 {
+<a name="l00660"></a>00660 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Unauthorised connection"</span>);
+<a name="l00661"></a>00661 <span class="keywordflow">return</span>;
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a>00664 <span class="keywordtype">char</span> match_against[MAXBUF];
+<a name="l00665"></a>00665 snprintf(match_against,MAXBUF,<span class="stringliteral">"%s@%s"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00666"></a>00666 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(match_against);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (!e)
+<a name="l00668"></a>00668 {
+<a name="l00669"></a>00669 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline</a>(match_against);
+<a name="l00670"></a>00670 <span class="keywordflow">if</span> (r)
+<a name="l00671"></a>00671 {
+<a name="l00672"></a>00672 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00673"></a>00673 snprintf(reason,MAXBUF,<span class="stringliteral">"G-Lined: %s"</span>,r);
+<a name="l00674"></a>00674 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00675"></a>00675 <span class="keywordflow">return</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 r = <a class="code" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline</a>(user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r)
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00681"></a>00681 snprintf(reason,MAXBUF,<span class="stringliteral">"K-Lined: %s"</span>,r);
+<a name="l00682"></a>00682 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00683"></a>00683 <span class="keywordflow">return</span>;
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 }
+<a name="l00686"></a>00686
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE Auth :Welcome to \002%s\002!"</span>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>);
+<a name="l00689"></a>00689 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"001 %s :Welcome to the %s IRC Network %s!%s@%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00690"></a>00690 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"002 %s :Your host is %s, running version %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00691"></a>00691 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"003 %s :This server was created %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,__TIME__,__DATE__);
+<a name="l00692"></a>00692 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00693"></a>00693 <span class="comment">// the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...</span>
+<a name="l00694"></a>00694 std::stringstream v;
+<a name="l00695"></a>00695 v << <span class="stringliteral">"WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS="</span> << MAXCHANS;
+<a name="l00696"></a>00696 v << <span class="stringliteral">" MAXBANS=60 NICKLEN="</span> << NICKMAX;
+<a name="l00697"></a>00697 v << <span class="stringliteral">" TOPICLEN="</span> << MAXTOPIC << <span class="stringliteral">" KICKLEN="</span> << MAXKICK << <span class="stringliteral">" MAXTARGETS=20 AWAYLEN="</span> << MAXAWAY << <span class="stringliteral">" CHANMODES=ohvb,k,l,psmnti NETWORK="</span>;
+<a name="l00698"></a>00698 v << <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00699"></a>00699 <a class="code" href="namespaceirc.html#string">std::string</a> data005 = v.str();
+<a name="l00700"></a>00700 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> On005Numeric(data005);
+<a name="l00701"></a>00701 <span class="comment">// anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...</span>
+<a name="l00702"></a>00702 <span class="comment">// so i'd better split it :)</span>
+<a name="l00703"></a>00703 std::stringstream out(data005);
+<a name="l00704"></a>00704 <a class="code" href="namespaceirc.html#string">std::string</a> token = <span class="stringliteral">""</span>;
+<a name="l00705"></a>00705 <a class="code" href="namespaceirc.html#string">std::string</a> line5 = <span class="stringliteral">""</span>;
+<a name="l00706"></a>00706 <span class="keywordtype">int</span> token_counter = 0;
+<a name="l00707"></a>00707 <span class="keywordflow">while</span> (!out.eof())
+<a name="l00708"></a>00708 {
+<a name="l00709"></a>00709 out >> token;
+<a name="l00710"></a>00710 line5 = line5 + token + <span class="stringliteral">" "</span>;
+<a name="l00711"></a>00711 token_counter++;
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> ((token_counter >= 13) || (out.eof() == <span class="keyword">true</span>))
+<a name="l00713"></a>00713 {
+<a name="l00714"></a>00714 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"005 %s %s:are supported by this server"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,line5.c_str());
+<a name="l00715"></a>00715 line5 = <span class="stringliteral">""</span>;
+<a name="l00716"></a>00716 token_counter = 0;
+<a name="l00717"></a>00717 }
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 ShowMOTD(user);
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="comment">// fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out</span>
+<a name="l00722"></a>00722 <span class="comment">// onto the network and produce 'fake direction'</span>
+<a name="l00723"></a>00723 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserConnect(user);
+<a name="l00724"></a>00724 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnGlobalConnect(user);
+<a name="l00725"></a>00725 user-><a class="code" href="classconnection.html#registered">registered</a> = 7;
+<a name="l00726"></a>00726 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client connecting on port %lu: %s!%s@%s [%s]"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#port">port</a>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,user-><a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>);
+<a name="l00727"></a>00727 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.cpp::kill_link" ref="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00349">349</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00390">Server::QuitUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00350"></a>00350 {
+<a name="l00351"></a>00351 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 strncpy(reason,r,MAXBUF);
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (strlen(reason)>MAXQUIT)
+<a name="l00358"></a>00358 {
+<a name="l00359"></a>00359 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00363"></a>00363 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00364"></a>00364 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00367"></a>00367 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00368"></a>00368 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 user-><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>))
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>)-><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00382"></a>00382 user-><a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="comment">// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything</span>
+<a name="l00386"></a>00386 <span class="comment">// if they were an oper with +s.</span>
+<a name="l00387"></a>00387 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00388"></a>00388 purge_empty_chans(user);
+<a name="l00389"></a>00389 <span class="comment">// fix by brain: only show local quits because we only show local connects (it just makes SENSE)</span>
+<a name="l00390"></a>00390 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00391"></a>00391 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client exiting: %s!%s@%s [%s]"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(user);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00398"></a>00398 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-><a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00404"></a>00404 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keyword">delete</span> user;
+<a name="l00410"></a>00410 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.cpp::kill_link_silent" ref="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link_silent </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00412">412</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 strncpy(reason,r,MAXBUF);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (strlen(reason)>MAXQUIT)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00426"></a>00426 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 user-><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00432"></a>00432 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>))
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>)-><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00445"></a>00445 user-><a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00449"></a>00449 purge_empty_chans(user);
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00453"></a>00453 {
+<a name="l00454"></a>00454 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-><a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00459"></a>00459 {
+<a name="l00460"></a>00460 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00461"></a>00461 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 <span class="keyword">delete</span> user;
+<a name="l00467"></a>00467 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29"></a><!-- doxytag: member="users.cpp::ReHashNick" ref="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29" args="(char *Old, char *New)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* ReHashNick </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">char * </td>
+ <td class="mdname" nowrap> <em>Old</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>New</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00743">743</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="comment">//user_hash::iterator newnick;</span>
+<a name="l00746"></a>00746 user_hash::iterator oldnick = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(Old);
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: %s %s"</span>,Old,New);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (!strcasecmp(Old,New))
+<a name="l00751"></a>00751 {
+<a name="l00752"></a>00752 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"old nick is new nick, skipping"</span>);
+<a name="l00753"></a>00753 <span class="keywordflow">return</span> oldnick->second;
+<a name="l00754"></a>00754 }
+<a name="l00755"></a>00755
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (oldnick == <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end()) <span class="keywordflow">return</span> NULL; <span class="comment">/* doesnt exist */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Found hashed nick %s"</span>,Old);
+<a name="l00759"></a>00759
+<a name="l00760"></a>00760 <a class="code" href="classuserrec.html">userrec</a>* olduser = oldnick->second;
+<a name="l00761"></a>00761 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New] = olduser;
+<a name="l00762"></a>00762 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(oldnick);
+<a name="l00763"></a>00763
+<a name="l00764"></a>00764 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Nick rehashed as %s"</span>,New);
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New];
+<a name="l00767"></a>00767 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="all_5Fopers"></a><!-- doxytag: member="users.cpp::all_opers" ref="all_5Fopers" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector<<a class="el" href="classuserrec.html">userrec</a>*> <a class="el" href="users_8cpp.html#all_5Fopers">all_opers</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00054">54</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00330">AddOper()</a>, and <a class="el" href="users_8cpp-source.html#l00336">DeleteOper()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="clientlist"></a><!-- doxytag: member="users.cpp::clientlist" ref="clientlist" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="el" href="users_8cpp.html#clientlist">clientlist</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
</table>
-<hr><h2>Variable Documentation</h2>
<a class="anchor" name="Config"></a><!-- doxytag: member="users.cpp::Config" ref="Config" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
</td>
</tr>
</table>
+<a class="anchor" name="factory"></a><!-- doxytag: member="users.cpp::factory" ref="factory" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector<<a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a>*> factory </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="fd_5Fref_5Ftable_5B_36_35_35_33_36_5D"></a><!-- doxytag: member="users.cpp::fd_ref_table" ref="fd_5Fref_5Ftable_5B_36_35_35_33_36_5D" args="[65536]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536] </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="local_5Fusers"></a><!-- doxytag: member="users.cpp::local_users" ref="local_5Fusers" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector<<a class="el" href="classuserrec.html">userrec</a>*> <a class="el" href="users_8cpp.html#local_5Fusers">local_users</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00052">52</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="MODCOUNT"></a><!-- doxytag: member="users.cpp::MODCOUNT" ref="MODCOUNT" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="module_5Fsockets"></a><!-- doxytag: member="users.cpp::module_sockets" ref="module_5Fsockets" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector<<a class="el" href="classInspSocket.html">InspSocket</a>*> <a class="el" href="users_8cpp.html#module_5Fsockets">module_sockets</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="modules"></a><!-- doxytag: member="users.cpp::modules" ref="modules" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector<<a class="el" href="classModule.html">Module</a>*> modules </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ServerInstance"></a><!-- doxytag: member="users.cpp::ServerInstance" ref="ServerInstance" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="socket_5Fref_5B_36_35_35_33_35_5D"></a><!-- doxytag: member="users.cpp::socket_ref" ref="socket_5Fref_5B_36_35_35_33_35_5D" args="[65535]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspSocket.html">InspSocket</a>* <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535] </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="socket_8cpp-source.html#l00043">43</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="TIME"></a><!-- doxytag: member="users.cpp::TIME" ref="TIME" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by
+<a class="anchor" name="whowas"></a><!-- doxytag: member="users.cpp::whowas" ref="whowas" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a> <a class="el" href="users_8cpp.html#whowas">whowas</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="WHOWAS_5FMAX"></a><!-- doxytag: member="users.cpp::WHOWAS_MAX" ref="WHOWAS_5FMAX" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="WHOWAS_5FSTALE"></a><!-- doxytag: member="users.cpp::WHOWAS_STALE" ref="WHOWAS_5FSTALE" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8h-source.html 408,159 493,185
-rect $connection_8h-source.html 401,108 500,135
-rect $users_8h-source.html 288,209 352,236
-rect $inspircd_8h-source.html 147,260 227,287
-rect $commands_8h-source.html 137,159 236,185
+rect $channels_8h-source.html 600,640 685,667
+rect $connection_8h-source.html 593,260 692,287
+rect $users_8h-source.html 457,564 521,591
+rect $hashcomp_8h-source.html 596,438 689,464
+rect $inspircd_8h-source.html 296,210 376,236
+rect $socketengine_8h-source.html 433,159 545,186
+rect $commands_8h-source.html 287,716 385,743
+rect $typedefs_8h-source.html 144,412 229,439
+rect $message_8h-source.html 293,666 379,692
+rect $xline_8h-source.html 305,767 367,794
-92d4da8a60e18559ac0cab66f6d1f6c6
\ No newline at end of file
+6b9b901afd1c7a5528dabf33f5a1687e
\ No newline at end of file
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#ifndef __USERS_H__ </span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define __USERS_H__ </span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00029"></a><a class="code" href="users_8h.html#STATUS_5FOP">00029</a> <span class="preprocessor">#define STATUS_OP 4</span>
-<a name="l00030"></a><a class="code" href="users_8h.html#STATUS_5FHOP">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_HOP 2</span>
-<a name="l00031"></a><a class="code" href="users_8h.html#STATUS_5FVOICE">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_VOICE 1</span>
-<a name="l00032"></a><a class="code" href="users_8h.html#STATUS_5FNORMAL">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_NORMAL 0</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a><a class="code" href="users_8h.html#CC_5FALLOW">00034</a> <span class="preprocessor">#define CC_ALLOW 0</span>
-<a name="l00035"></a><a class="code" href="users_8h.html#CC_5FDENY">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define CC_DENY 1</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>
-<a name="l00039"></a><a class="code" href="classInvited.html">00039</a> <span class="keyword">class </span><a class="code" href="classInvited.html">Invited</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keyword">public</span>:
-<a name="l00042"></a><a class="code" href="classInvited.html#channel_5BCHANMAX_5D">00042</a> <span class="keywordtype">char</span> <a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>[CHANMAX];
-<a name="l00043"></a>00043 };
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00048"></a><a class="code" href="classConnectClass.html">00048</a> <span class="keyword">class </span><a class="code" href="classConnectClass.html">ConnectClass</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="keyword">public</span>:
-<a name="l00053"></a><a class="code" href="classConnectClass.html#type">00053</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#type">type</a>;
-<a name="l00056"></a><a class="code" href="classConnectClass.html#registration_5Ftimeout">00056</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a>;
-<a name="l00059"></a><a class="code" href="classConnectClass.html#flood">00059</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#flood">flood</a>;
-<a name="l00062"></a><a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">00062</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>[MAXBUF];
-<a name="l00065"></a><a class="code" href="classConnectClass.html#pingtime">00065</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#pingtime">pingtime</a>;
-<a name="l00068"></a><a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">00068</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>[MAXBUF];
-<a name="l00069"></a>00069
-<a name="l00072"></a><a class="code" href="classConnectClass.html#threshold">00072</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#threshold">threshold</a>;
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+<a name="l00030"></a>00030
+<a name="l00031"></a><a class="code" href="users_8h.html#STATUS_5FOP">00031</a> <span class="preprocessor">#define STATUS_OP 4</span>
+<a name="l00032"></a><a class="code" href="users_8h.html#STATUS_5FHOP">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_HOP 2</span>
+<a name="l00033"></a><a class="code" href="users_8h.html#STATUS_5FVOICE">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_VOICE 1</span>
+<a name="l00034"></a><a class="code" href="users_8h.html#STATUS_5FNORMAL">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_NORMAL 0</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>
+<a name="l00036"></a><a class="code" href="users_8h.html#CC_5FALLOW">00036</a> <span class="preprocessor">#define CC_ALLOW 0</span>
+<a name="l00037"></a><a class="code" href="users_8h.html#CC_5FDENY">00037</a> <span class="preprocessor"></span><span class="preprocessor">#define CC_DENY 1</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> <a class="code" href="namespaceirc.html#string">string</a> <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(<span class="keyword">const</span> T &in);
+<a name="l00040"></a>00040
+<a name="l00043"></a><a class="code" href="classInvited.html">00043</a> <span class="keyword">class </span><a class="code" href="classInvited.html">Invited</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keyword">public</span>:
+<a name="l00046"></a><a class="code" href="classInvited.html#channel">00046</a> <a class="code" href="namespaceirc.html#string">irc::string</a> <a class="code" href="classInvited.html#channel">channel</a>;
+<a name="l00047"></a>00047 };
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049
+<a name="l00052"></a><a class="code" href="classConnectClass.html">00052</a> <span class="keyword">class </span><a class="code" href="classConnectClass.html">ConnectClass</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <span class="keyword">public</span>:
+<a name="l00057"></a><a class="code" href="classConnectClass.html#type">00057</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#type">type</a>;
+<a name="l00060"></a><a class="code" href="classConnectClass.html#registration_5Ftimeout">00060</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a>;
+<a name="l00063"></a><a class="code" href="classConnectClass.html#flood">00063</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#flood">flood</a>;
+<a name="l00066"></a><a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">00066</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>[MAXBUF];
+<a name="l00069"></a><a class="code" href="classConnectClass.html#pingtime">00069</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#pingtime">pingtime</a>;
+<a name="l00072"></a><a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">00072</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>[MAXBUF];
<a name="l00073"></a>00073
-<a name="l00076"></a><a class="code" href="classConnectClass.html#sendqmax">00076</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a>;
+<a name="l00076"></a><a class="code" href="classConnectClass.html#threshold">00076</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#threshold">threshold</a>;
<a name="l00077"></a>00077
-<a name="l00080"></a><a class="code" href="classConnectClass.html#recvqmax">00080</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a>;
-<a name="l00081"></a>00081
-<a name="l00082"></a><a class="code" href="classConnectClass.html#ConnectClass_28_29">00082</a> <a class="code" href="classConnectClass.html#ConnectClass_28_29">ConnectClass</a>()
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
-<a name="l00085"></a>00085 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
-<a name="l00086"></a>00086 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
-<a name="l00087"></a>00087 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
-<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
-<a name="l00090"></a>00090 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00091"></a>00091 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 };
-<a name="l00094"></a>00094
-<a name="l00097"></a><a class="code" href="users_8h.html#InvitedList">00097</a> <span class="keyword">typedef</span> std::vector<Invited> <a class="code" href="users_8h.html#InvitedList">InvitedList</a>;
+<a name="l00080"></a><a class="code" href="classConnectClass.html#sendqmax">00080</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a>;
+<a name="l00081"></a>00081
+<a name="l00084"></a><a class="code" href="classConnectClass.html#recvqmax">00084</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a>;
+<a name="l00085"></a>00085
+<a name="l00086"></a><a class="code" href="classConnectClass.html#ConnectClass_28_29">00086</a> <a class="code" href="classConnectClass.html#ConnectClass_28_29">ConnectClass</a>()
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
+<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
+<a name="l00090"></a>00090 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
+<a name="l00091"></a>00091 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
+<a name="l00094"></a>00094 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00095"></a>00095 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 };
<a name="l00098"></a>00098
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100
-<a name="l00103"></a><a class="code" href="users_8h.html#ClassVector">00103</a> <span class="keyword">typedef</span> std::vector<ConnectClass> <a class="code" href="users_8h.html#ClassVector">ClassVector</a>;
+<a name="l00101"></a><a class="code" href="users_8h.html#InvitedList">00101</a> <span class="keyword">typedef</span> std::vector<Invited> <a class="code" href="users_8h.html#InvitedList">InvitedList</a>;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103
<a name="l00104"></a>00104
-<a name="l00111"></a><a class="code" href="classuserrec.html">00111</a> <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a> : <span class="keyword">public</span> <a class="code" href="classconnection.html">connection</a>
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 <span class="keyword">private</span>:
-<a name="l00114"></a>00114
-<a name="l00117"></a><a class="code" href="classuserrec.html#invites">00117</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a> <a class="code" href="classuserrec.html#invites">invites</a>;
-<a name="l00118"></a>00118 <span class="keyword">public</span>:
-<a name="l00119"></a>00119
-<a name="l00124"></a><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">00124</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
-<a name="l00125"></a>00125
-<a name="l00129"></a><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">00129</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>[IDENTMAX+2];
-<a name="l00130"></a>00130
-<a name="l00134"></a><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">00134</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>[160];
-<a name="l00135"></a>00135
-<a name="l00138"></a><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">00138</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
+<a name="l00107"></a><a class="code" href="users_8h.html#ClassVector">00107</a> <span class="keyword">typedef</span> std::vector<ConnectClass> <a class="code" href="users_8h.html#ClassVector">ClassVector</a>;
+<a name="l00108"></a>00108
+<a name="l00115"></a><a class="code" href="classuserrec.html">00115</a> <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a> : <span class="keyword">public</span> <a class="code" href="classconnection.html">connection</a>
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">private</span>:
+<a name="l00118"></a>00118
+<a name="l00121"></a><a class="code" href="classuserrec.html#invites">00121</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a> <a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00122"></a>00122 <span class="keyword">public</span>:
+<a name="l00123"></a>00123
+<a name="l00128"></a><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">00128</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
+<a name="l00129"></a>00129
+<a name="l00133"></a><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">00133</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>[IDENTMAX+2];
+<a name="l00134"></a>00134
+<a name="l00138"></a><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">00138</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>[160];
<a name="l00139"></a>00139
-<a name="l00147"></a><a class="code" href="classuserrec.html#modes_5B_35_34_5D">00147</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>[54];
-<a name="l00148"></a>00148
-<a name="l00149"></a><a class="code" href="classuserrec.html#chans">00149</a> std::vector<ucrec> <a class="code" href="classuserrec.html#chans">chans</a>;
-<a name="l00150"></a>00150
-<a name="l00153"></a><a class="code" href="classuserrec.html#server">00153</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#server">server</a>;
+<a name="l00142"></a><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">00142</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
+<a name="l00143"></a>00143
+<a name="l00151"></a><a class="code" href="classuserrec.html#modes_5B_35_34_5D">00151</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>[54];
+<a name="l00152"></a>00152
+<a name="l00153"></a><a class="code" href="classuserrec.html#chans">00153</a> std::vector<ucrec> <a class="code" href="classuserrec.html#chans">chans</a>;
<a name="l00154"></a>00154
-<a name="l00158"></a><a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">00158</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>[MAXAWAY+1];
-<a name="l00159"></a>00159
-<a name="l00164"></a><a class="code" href="classuserrec.html#flood">00164</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#flood">flood</a>;
-<a name="l00165"></a>00165
-<a name="l00170"></a><a class="code" href="classuserrec.html#timeout">00170</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#timeout">timeout</a>;
-<a name="l00171"></a>00171
-<a name="l00177"></a><a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">00177</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>[NICKMAX];
-<a name="l00178"></a>00178
-<a name="l00181"></a><a class="code" href="classuserrec.html#dns_5Fdone">00181</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>;
+<a name="l00157"></a><a class="code" href="classuserrec.html#server">00157</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#server">server</a>;
+<a name="l00158"></a>00158
+<a name="l00162"></a><a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">00162</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>[MAXAWAY+1];
+<a name="l00163"></a>00163
+<a name="l00168"></a><a class="code" href="classuserrec.html#flood">00168</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#flood">flood</a>;
+<a name="l00169"></a>00169
+<a name="l00174"></a><a class="code" href="classuserrec.html#timeout">00174</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#timeout">timeout</a>;
+<a name="l00175"></a>00175
+<a name="l00181"></a><a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">00181</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>[NICKMAX];
<a name="l00182"></a>00182
-<a name="l00185"></a><a class="code" href="classuserrec.html#pingmax">00185</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#pingmax">pingmax</a>;
+<a name="l00185"></a><a class="code" href="classuserrec.html#dns_5Fdone">00185</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>;
<a name="l00186"></a>00186
-<a name="l00191"></a><a class="code" href="classuserrec.html#password_5BMAXBUF_5D">00191</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#password_5BMAXBUF_5D">password</a>[MAXBUF];
-<a name="l00192"></a>00192
-<a name="l00197"></a><a class="code" href="classuserrec.html#recvq">00197</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#recvq">recvq</a>;
-<a name="l00198"></a>00198
-<a name="l00202"></a><a class="code" href="classuserrec.html#sendq">00202</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#sendq">sendq</a>;
-<a name="l00203"></a>00203
-<a name="l00206"></a><a class="code" href="classuserrec.html#lines_5Fin">00206</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a>;
-<a name="l00207"></a><a class="code" href="classuserrec.html#reset_5Fdue">00207</a> time_t <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a>;
-<a name="l00208"></a><a class="code" href="classuserrec.html#threshold">00208</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#threshold">threshold</a>;
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">/* Write error string</span>
-<a name="l00211"></a>00211 <span class="comment"> */</span>
-<a name="l00212"></a><a class="code" href="classuserrec.html#WriteError">00212</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#WriteError">WriteError</a>;
+<a name="l00189"></a><a class="code" href="classuserrec.html#pingmax">00189</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#pingmax">pingmax</a>;
+<a name="l00190"></a>00190
+<a name="l00195"></a><a class="code" href="classuserrec.html#password_5BMAXBUF_5D">00195</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#password_5BMAXBUF_5D">password</a>[MAXBUF];
+<a name="l00196"></a>00196
+<a name="l00201"></a><a class="code" href="classuserrec.html#recvq">00201</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#recvq">recvq</a>;
+<a name="l00202"></a>00202
+<a name="l00206"></a><a class="code" href="classuserrec.html#sendq">00206</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#sendq">sendq</a>;
+<a name="l00207"></a>00207
+<a name="l00210"></a><a class="code" href="classuserrec.html#lines_5Fin">00210</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a>;
+<a name="l00211"></a><a class="code" href="classuserrec.html#reset_5Fdue">00211</a> time_t <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a>;
+<a name="l00212"></a><a class="code" href="classuserrec.html#threshold">00212</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#threshold">threshold</a>;
<a name="l00213"></a>00213
-<a name="l00216"></a><a class="code" href="classuserrec.html#sendqmax">00216</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#sendqmax">sendqmax</a>;
+<a name="l00214"></a>00214 <span class="comment">/* Write error string</span>
+<a name="l00215"></a>00215 <span class="comment"> */</span>
+<a name="l00216"></a><a class="code" href="classuserrec.html#WriteError">00216</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#WriteError">WriteError</a>;
<a name="l00217"></a>00217
-<a name="l00220"></a><a class="code" href="classuserrec.html#recvqmax">00220</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#recvqmax">recvqmax</a>;
+<a name="l00220"></a><a class="code" href="classuserrec.html#sendqmax">00220</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#sendqmax">sendqmax</a>;
<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <a class="code" href="classuserrec.html#userrec_28_29">userrec</a>();
-<a name="l00223"></a>00223
-<a name="l00228"></a>00228 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">GetFullHost</a>();
-<a name="l00229"></a>00229
-<a name="l00235"></a>00235 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a>();
-<a name="l00236"></a>00236
-<a name="l00239"></a>00239 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(<span class="keywordtype">char</span>* channel);
+<a name="l00224"></a><a class="code" href="classuserrec.html#recvqmax">00224</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#recvqmax">recvqmax</a>;
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <a class="code" href="classuserrec.html#userrec_28_29">userrec</a>();
+<a name="l00227"></a>00227
+<a name="l00232"></a>00232 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">GetFullHost</a>();
+<a name="l00233"></a>00233
+<a name="l00239"></a>00239 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a>();
<a name="l00240"></a>00240
-<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a>(<span class="keywordtype">char</span>* channel);
+<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &channel);
<a name="l00244"></a>00244
-<a name="l00249"></a>00249 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(<span class="keywordtype">char</span>* channel);
-<a name="l00250"></a>00250
-<a name="l00255"></a>00255 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a>(<span class="keywordtype">char</span>* command);
-<a name="l00256"></a>00256
-<a name="l00259"></a>00259 <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size);
+<a name="l00247"></a>00247 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">InviteTo</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &channel);
+<a name="l00248"></a>00248
+<a name="l00253"></a>00253 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &channel);
+<a name="l00254"></a>00254
+<a name="l00259"></a>00259 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">HasPermission</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &command);
<a name="l00260"></a>00260
-<a name="l00268"></a>00268 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a);
-<a name="l00269"></a>00269
-<a name="l00273"></a>00273 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady</a>();
-<a name="l00274"></a>00274
-<a name="l00277"></a>00277 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00263"></a>00263 <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size);
+<a name="l00264"></a>00264
+<a name="l00272"></a>00272 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a);
+<a name="l00273"></a>00273
+<a name="l00277"></a>00277 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady</a>();
<a name="l00278"></a>00278
-<a name="l00286"></a>00286 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">GetBuffer</a>();
-<a name="l00287"></a>00287
-<a name="l00293"></a>00293 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error);
-<a name="l00294"></a>00294
-<a name="l00298"></a>00298 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a>();
-<a name="l00299"></a>00299
-<a name="l00305"></a>00305 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
-<a name="l00306"></a>00306
-<a name="l00313"></a>00313 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
-<a name="l00314"></a>00314
-<a name="l00317"></a>00317 <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a>();
+<a name="l00281"></a>00281 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00282"></a>00282
+<a name="l00290"></a>00290 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">GetBuffer</a>();
+<a name="l00291"></a>00291
+<a name="l00297"></a>00297 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error);
+<a name="l00298"></a>00298
+<a name="l00302"></a>00302 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a>();
+<a name="l00303"></a>00303
+<a name="l00309"></a>00309 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
+<a name="l00310"></a>00310
+<a name="l00317"></a>00317 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
<a name="l00318"></a>00318
-<a name="l00321"></a>00321 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00321"></a>00321 <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a>();
<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html#_7Euserrec_28_29">~userrec</a>();
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325 <span class="preprocessor">#ifdef THREADED_DNS</span>
-<a name="l00326"></a>00326 <span class="preprocessor"></span> pthread_t dnsthread;
-<a name="l00327"></a>00327 <span class="preprocessor">#endif</span>
-<a name="l00328"></a>00328 <span class="preprocessor"></span>};
-<a name="l00329"></a>00329
-<a name="l00332"></a><a class="code" href="classWhoWasUser.html">00332</a> <span class="keyword">class </span><a class="code" href="classWhoWasUser.html">WhoWasUser</a>
-<a name="l00333"></a>00333 {
-<a name="l00334"></a>00334 <span class="keyword">public</span>:
-<a name="l00335"></a><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">00335</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
-<a name="l00336"></a><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">00336</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>[IDENTMAX+1];
-<a name="l00337"></a><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">00337</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>[160];
-<a name="l00338"></a><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">00338</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>[160];
-<a name="l00339"></a><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">00339</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
-<a name="l00340"></a><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">00340</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>[256];
-<a name="l00341"></a><a class="code" href="classWhoWasUser.html#signon">00341</a> time_t <a class="code" href="classWhoWasUser.html#signon">signon</a>;
-<a name="l00342"></a>00342 };
-<a name="l00343"></a>00343
-<a name="l00344"></a>00344 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+<a name="l00325"></a>00325 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html#_7Euserrec_28_29">~userrec</a>();
+<a name="l00328"></a>00328
+<a name="l00329"></a>00329 <span class="preprocessor">#ifdef THREADED_DNS</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span> pthread_t dnsthread;
+<a name="l00331"></a>00331 <span class="preprocessor">#endif</span>
+<a name="l00332"></a>00332 <span class="preprocessor"></span>};
+<a name="l00333"></a>00333
+<a name="l00336"></a><a class="code" href="classWhoWasUser.html">00336</a> <span class="keyword">class </span><a class="code" href="classWhoWasUser.html">WhoWasUser</a>
+<a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keyword">public</span>:
+<a name="l00339"></a><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">00339</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
+<a name="l00340"></a><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">00340</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>[IDENTMAX+1];
+<a name="l00341"></a><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">00341</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>[160];
+<a name="l00342"></a><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">00342</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>[160];
+<a name="l00343"></a><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">00343</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
+<a name="l00344"></a><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">00344</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>[256];
+<a name="l00345"></a><a class="code" href="classWhoWasUser.html#signon">00345</a> time_t <a class="code" href="classWhoWasUser.html#signon">signon</a>;
+<a name="l00346"></a>00346 };
+<a name="l00347"></a>00347
+<a name="l00348"></a>00348 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">AddOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00349"></a>00349 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00350"></a>00350 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
+<a name="l00351"></a>00351 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
+<a name="l00352"></a>00352 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(<a class="code" href="classuserrec.html">userrec</a>* u);
+<a name="l00353"></a>00353 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a>(<span class="keywordtype">int</span> socket, <span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> iscached, <span class="keywordtype">char</span>* ip);
+<a name="l00354"></a>00354 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00355"></a>00355 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00356"></a>00356 <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a>(<span class="keywordtype">char</span>* Old, <span class="keywordtype">char</span>* New);
+<a name="l00357"></a>00357 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keyword">const</span> <span class="keywordtype">char</span>* newnick);
+<a name="l00358"></a>00358
+<a name="l00359"></a>00359 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
<code>#include "inspstring.h"</code><br>
<code>#include "<a class="el" href="connection_8h-source.html">connection.h</a>"</code><br>
<code>#include <string></code><br>
+<code>#include "<a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>"</code><br>
<p>
Include dependency graph for users.h:<p><center><img src="users_8h__incl.gif" border="0" usemap="#users.h_map" alt=""></center>
<map name="users.h_map">
<area href="channels_8h-source.html" shape="rect" coords="128,108,213,135" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="121,58,220,84" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="121,159,220,185" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="124,57,217,84" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="users_8h__dep__incl.gif" border="0" usemap="#users.hdep_map" alt=""></center>
<map name="users.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="413,412,512,439" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="413,311,512,337" alt="">
-<area href="users_8cpp-source.html" shape="rect" coords="280,159,360,185" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="125,108,224,135" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="137,361,212,388" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="277,361,363,388" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="135,209,215,236" alt="">
-<area href="cull__list_8h-source.html" shape="rect" coords="136,412,213,439" alt="">
-<area href="message_8h-source.html" shape="rect" coords="277,564,363,591" alt="">
-<area href="mode_8h-source.html" shape="rect" coords="287,260,353,287" alt="">
-<area href="userprocess_8h-source.html" shape="rect" coords="123,564,227,591" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="289,463,351,489" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="531,235,629,261" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="531,387,629,413" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="540,564,620,591" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="379,615,477,641" alt="">
+<area href="cull__list_8h-source.html" shape="rect" coords="121,311,199,337" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="249,159,324,185" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="385,260,471,287" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="247,412,327,439" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="376,463,480,489" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="127,361,193,388" alt="">
+<area href="message_8h-source.html" shape="rect" coords="385,311,471,337" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="397,513,459,540" alt="">
</map>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector< <a class="el" href="classConnectClass.html">ConnectClass</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#ClassVector">ClassVector</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds a complete list of all allow and deny tags from the configuration file (connection classes). <a href="#ClassVector"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">string</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a> (const T &in)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#AddOper_28userrec_20_2Auser_29">AddOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a> (<a class="el" href="classuserrec.html">userrec</a> *u)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a> (int socket, char *host, int port, bool iscached, char *ip)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a> (char *Old, char *New)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *newnick)</td></tr>
+
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="CC_5FALLOW"></a><!-- doxytag: member="users.h::CC_ALLOW" ref="CC_5FALLOW" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00036">36</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="CC_5FDENY"></a><!-- doxytag: member="users.h::CC_DENY" ref="CC_5FDENY" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00035">35</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00037">37</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="STATUS_5FHOP"></a><!-- doxytag: member="users.h::STATUS_HOP" ref="STATUS_5FHOP" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00030">30</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00032">32</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00032">32</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="STATUS_5FOP"></a><!-- doxytag: member="users.h::STATUS_OP" ref="STATUS_5FOP" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00029">29</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00031">31</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="STATUS_5FVOICE"></a><!-- doxytag: member="users.h::STATUS_VOICE" ref="STATUS_5FVOICE" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00031">31</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00033">33</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<hr><h2>Typedef Documentation</h2>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00103">103</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00107">107</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="InvitedList"></a><!-- doxytag: member="users.h::InvitedList" ref="InvitedList" args="" --><p>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00097">97</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00101">101</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29"></a><!-- doxytag: member="users.h::AddClient" ref="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29" args="(int socket, char *host, int port, bool iscached, char *ip)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddClient </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">int </td>
+ <td class="mdname" nowrap> <em>socket</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>host</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int </td>
+ <td class="mdname" nowrap> <em>port</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>bool </td>
+ <td class="mdname" nowrap> <em>iscached</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>ip</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00524">524</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8h-source.html#l00036">CC_ALLOW</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00243">ServerConfig::Classes</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00056">ConvToStr()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00177">ServerConfig::dns_timeout</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd__io_8h-source.html#l00194">ServerConfig::SoftLimit</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, and <a class="el" href="socketengine_8h-source.html#l00043">X_ESTAB_CLIENT</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="namespaceirc.html#string">string</a> tempnick;
+<a name="l00527"></a>00527 <span class="keywordtype">char</span> tn2[MAXBUF];
+<a name="l00528"></a>00528 user_hash::iterator iter;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 tempnick = <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(socket) + <span class="stringliteral">"-unknown"</span>;
+<a name="l00531"></a>00531 sprintf(tn2,<span class="stringliteral">"%lu-unknown"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(tempnick);
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 <span class="comment">// fix by brain.</span>
+<a name="l00536"></a>00536 <span class="comment">// as these nicknames are 'RFC impossible', we can be sure nobody is going to be</span>
+<a name="l00537"></a>00537 <span class="comment">// using one as a registered connection. As theyre per fd, we can also safely assume</span>
+<a name="l00538"></a>00538 <span class="comment">// that we wont have collisions. Therefore, if the nick exists in the list, its only</span>
+<a name="l00539"></a>00539 <span class="comment">// used by a dead socket, erase the iterator so that the new client may reclaim it.</span>
+<a name="l00540"></a>00540 <span class="comment">// this was probably the cause of 'server ignores me when i hammer it with reconnects'</span>
+<a name="l00541"></a>00541 <span class="comment">// issue in earlier alphas/betas</span>
+<a name="l00542"></a>00542 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00543"></a>00543 {
+<a name="l00544"></a>00544 <a class="code" href="classuserrec.html">userrec</a>* goner = iter->second;
+<a name="l00545"></a>00545 <span class="keyword">delete</span> goner;
+<a name="l00546"></a>00546 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">/*</span>
+<a name="l00550"></a>00550 <span class="comment"> * It is OK to access the value here this way since we know</span>
+<a name="l00551"></a>00551 <span class="comment"> * it exists, we just created it above.</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * At NO other time should you access a value in a map or a</span>
+<a name="l00554"></a>00554 <span class="comment"> * hash_map this way.</span>
+<a name="l00555"></a>00555 <span class="comment"> */</span>
+<a name="l00556"></a>00556 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick] = <span class="keyword">new</span> <a class="code" href="classuserrec.html">userrec</a>();
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"AddClient: %lu %s %d %s"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket,host,port,ip);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->fd = socket;
+<a name="l00561"></a>00561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
+<a name="l00562"></a>00562 strlcpy(clientlist[tempnick]->host, host,160);
+<a name="l00563"></a>00563 strlcpy(clientlist[tempnick]->dhost, host,160);
+<a name="l00564"></a>00564 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->server = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00565"></a>00565 strlcpy(clientlist[tempnick]->ident, <span class="stringliteral">"unknown"</span>,IDENTMAX);
+<a name="l00566"></a>00566 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->registered = 0;
+<a name="l00567"></a>00567 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->signon = <a class="code" href="channels_8cpp.html#TIME">TIME</a> + <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00568"></a>00568 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->lastping = 1;
+<a name="l00569"></a>00569 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->port = port;
+<a name="l00570"></a>00570 strlcpy(clientlist[tempnick]->ip,ip,16);
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="comment">// set the registration timeout for this user</span>
+<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> class_regtimeout = 90;
+<a name="l00574"></a>00574 <span class="keywordtype">int</span> class_flood = 0;
+<a name="l00575"></a>00575 <span class="keywordtype">long</span> class_threshold = 5;
+<a name="l00576"></a>00576 <span class="keywordtype">long</span> class_sqmax = 262144; <span class="comment">// 256kb</span>
+<a name="l00577"></a>00577 <span class="keywordtype">long</span> class_rqmax = 4096; <span class="comment">// 4k</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="keywordflow">for</span> (ClassVector::iterator i = <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Classes">Classes</a>.begin(); i != <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Classes">Classes</a>.end(); i++)
+<a name="l00580"></a>00580 {
+<a name="l00581"></a>00581 <span class="keywordflow">if</span> (match(clientlist[tempnick]->host,i->host) && (i->type == <a class="code" href="users_8h.html#CC_5FALLOW">CC_ALLOW</a>))
+<a name="l00582"></a>00582 {
+<a name="l00583"></a>00583 class_regtimeout = (<span class="keywordtype">unsigned</span> long)i->registration_timeout;
+<a name="l00584"></a>00584 class_flood = i->flood;
+<a name="l00585"></a>00585 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->pingmax = i->pingtime;
+<a name="l00586"></a>00586 class_threshold = i->threshold;
+<a name="l00587"></a>00587 class_sqmax = i->sendqmax;
+<a name="l00588"></a>00588 class_rqmax = i->recvqmax;
+<a name="l00589"></a>00589 <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591 }
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->nping = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->pingmax + <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00594"></a>00594 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->timeout = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+class_regtimeout;
+<a name="l00595"></a>00595 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->flood = class_flood;
+<a name="l00596"></a>00596 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->threshold = class_threshold;
+<a name="l00597"></a>00597 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->sendqmax = class_sqmax;
+<a name="l00598"></a>00598 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->recvqmax = class_rqmax;
+<a name="l00599"></a>00599
+<a name="l00600"></a>00600 <a class="code" href="classucrec.html">ucrec</a> a;
+<a name="l00601"></a>00601 a.<a class="code" href="classucrec.html#channel">channel</a> = NULL;
+<a name="l00602"></a>00602 a.<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
+<a name="l00603"></a>00603 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < MAXCHANS; i++)
+<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]->chans.push_back(a);
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() > <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>)
+<a name="l00607"></a>00607 {
+<a name="l00608"></a>00608 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() >= MAXCLIENTS)
+<a name="l00613"></a>00613 {
+<a name="l00614"></a>00614 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00615"></a>00615 <span class="keywordflow">return</span>;
+<a name="l00616"></a>00616 }
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// this is done as a safety check to keep the file descriptors within range of fd_ref_table.</span>
+<a name="l00619"></a>00619 <span class="comment">// its a pretty big but for the moment valid assumption:</span>
+<a name="l00620"></a>00620 <span class="comment">// file descriptors are handed out starting at 0, and are recycled as theyre freed.</span>
+<a name="l00621"></a>00621 <span class="comment">// therefore if there is ever an fd over 65535, 65536 clients must be connected to the</span>
+<a name="l00622"></a>00622 <span class="comment">// irc server at once (or the irc server otherwise initiating this many connections, files etc)</span>
+<a name="l00623"></a>00623 <span class="comment">// which for the time being is a physical impossibility (even the largest networks dont have more</span>
+<a name="l00624"></a>00624 <span class="comment">// than about 10,000 users on ONE server!)</span>
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)socket > 65534)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"Server is full"</span>);
+<a name="l00628"></a>00628 <span class="keywordflow">return</span>;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(ip);
+<a name="l00631"></a>00631 <span class="keywordflow">if</span> (!e)
+<a name="l00632"></a>00632 {
+<a name="l00633"></a>00633 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline</a>(ip);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (r)
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00637"></a>00637 snprintf(reason,MAXBUF,<span class="stringliteral">"Z-Lined: %s"</span>,r);
+<a name="l00638"></a>00638 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],reason);
+<a name="l00639"></a>00639 <span class="keywordflow">return</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[socket] = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick];
+<a name="l00643"></a>00643 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.push_back(clientlist[tempnick]);
+<a name="l00644"></a>00644 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(socket,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FCLIENT">X_ESTAB_CLIENT</a>);
+<a name="l00645"></a>00645 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::AddOper" ref="AddOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddOper </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00330">330</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper added to optimization list"</span>);
+<a name="l00333"></a>00333 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.push_back(user);
+<a name="l00334"></a>00334 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddWhoWas_28userrec_20_2Au_29"></a><!-- doxytag: member="users.h::AddWhoWas" ref="AddWhoWas_28userrec_20_2Au_29" args="(userrec *u)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddWhoWas </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>u</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00471">471</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="users_8h-source.html#l00138">userrec::dhost</a>, <a class="el" href="users_8h-source.html#l00341">WhoWasUser::dhost</a>, <a class="el" href="users_8h-source.html#l00142">userrec::fullname</a>, <a class="el" href="users_8h-source.html#l00343">WhoWasUser::fullname</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00342">WhoWasUser::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8h-source.html#l00340">WhoWasUser::ident</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00339">WhoWasUser::nick</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00344">WhoWasUser::server</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="users_8h-source.html#l00345">WhoWasUser::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="users_8cpp.html#whowas">whowas</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>, and <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 whowas_hash::iterator iter = <a class="code" href="users_8cpp.html#whowas">whowas</a>.find(u-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00474"></a>00474 <a class="code" href="classWhoWasUser.html">WhoWasUser</a> *a = <span class="keyword">new</span> <a class="code" href="classWhoWasUser.html">WhoWasUser</a>();
+<a name="l00475"></a>00475 strlcpy(a-><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>,u-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00476"></a>00476 strlcpy(a-><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>,u-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,IDENTMAX);
+<a name="l00477"></a>00477 strlcpy(a-><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>,u-><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,160);
+<a name="l00478"></a>00478 strlcpy(a-><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>,u-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,160);
+<a name="l00479"></a>00479 strlcpy(a-><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,u-><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,MAXGECOS);
+<a name="l00480"></a>00480 strlcpy(a-><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>,u-><a class="code" href="classuserrec.html#server">server</a>,256);
+<a name="l00481"></a>00481 a-><a class="code" href="classWhoWasUser.html#signon">signon</a> = u-><a class="code" href="classconnection.html#signon">signon</a>;
+<a name="l00482"></a>00482
+<a name="l00483"></a>00483 <span class="comment">/* MAX_WHOWAS: max number of /WHOWAS items</span>
+<a name="l00484"></a>00484 <span class="comment"> * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and</span>
+<a name="l00485"></a>00485 <span class="comment"> * can be replaced by a newer one</span>
+<a name="l00486"></a>00486 <span class="comment"> */</span>
+<a name="l00487"></a>00487
+<a name="l00488"></a>00488 <span class="keywordflow">if</span> (iter == <a class="code" href="users_8cpp.html#whowas">whowas</a>.end())
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (<a class="code" href="users_8cpp.html#whowas">whowas</a>.size() >= (unsigned)<a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (whowas_hash::iterator i = <a class="code" href="users_8cpp.html#whowas">whowas</a>.begin(); i != <a class="code" href="users_8cpp.html#whowas">whowas</a>.end(); i++)
+<a name="l00493"></a>00493 {
+<a name="l00494"></a>00494 <span class="comment">// 3600 seconds in an hour ;)</span>
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
+<a name="l00496"></a>00496 {
+<a name="l00497"></a>00497 <span class="comment">// delete the old one</span>
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (i->second) <span class="keyword">delete</span> i->second;
+<a name="l00499"></a>00499 <span class="comment">// replace with new one</span>
+<a name="l00500"></a>00500 i->second = a;
+<a name="l00501"></a>00501 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added WHOWAS entry, purged an old record"</span>);
+<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 <span class="comment">// no space left and user doesnt exist. Don't leave ram in use!</span>
+<a name="l00506"></a>00506 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"</span>);
+<a name="l00507"></a>00507 <span class="keyword">delete</span> a;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 <span class="keywordflow">else</span>
+<a name="l00510"></a>00510 {
+<a name="l00511"></a>00511 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added fresh WHOWAS entry"</span>);
+<a name="l00512"></a>00512 <a class="code" href="users_8cpp.html#whowas">whowas</a>[a-><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>] = a;
+<a name="l00513"></a>00513 }
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515 <span class="keywordflow">else</span>
+<a name="l00516"></a>00516 {
+<a name="l00517"></a>00517 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"updated WHOWAS entry"</span>);
+<a name="l00518"></a>00518 <span class="keywordflow">if</span> (iter->second) <span class="keyword">delete</span> iter->second;
+<a name="l00519"></a>00519 iter->second = a;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::ConnectUser" ref="ConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void ConnectUser </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00731">731</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00185">userrec::dns_done</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>.<div class="fragment"><pre class="fragment"><a name="l00732"></a>00732 {
+<a name="l00733"></a>00733 <span class="comment">// dns is already done, things are fast. no need to wait for dns to complete just pass them straight on</span>
+<a name="l00734"></a>00734 <span class="keywordflow">if</span> ((user-><a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>) && (user-><a class="code" href="classconnection.html#registered">registered</a> >= 3) && (AllModulesReportReady(user)))
+<a name="l00735"></a>00735 {
+<a name="l00736"></a>00736 <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(user);
+<a name="l00737"></a>00737 }
+<a name="l00738"></a>00738 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConvToStr_28const_20T_20_26in_29"></a><!-- doxytag: member="users.h::ConvToStr" ref="ConvToStr_28const_20T_20_26in_29" args="(const T &in)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="mdPrefix" colspan="4">
+template<typename T> </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">string</a> ConvToStr </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">const T & </td>
+ <td class="mdname1" valign="top" nowrap> <em>in</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00056">56</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>.<div class="fragment"><pre class="fragment"><a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 stringstream tmp;
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!(tmp << in)) <span class="keywordflow">return</span> <a class="code" href="namespaceirc.html#string">string</a>();
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> tmp.str();
+<a name="l00061"></a>00061 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="DeleteOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::DeleteOper" ref="DeleteOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void DeleteOper </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00336">336</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keywordflow">for</span> (std::vector<userrec*>::iterator a = <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.begin(); a < <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.end(); a++)
+<a name="l00339"></a>00339 {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (*a == user)
+<a name="l00341"></a>00341 {
+<a name="l00342"></a>00342 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper removed from optimization list"</span>);
+<a name="l00343"></a>00343 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.erase(a);
+<a name="l00344"></a>00344 <span class="keywordflow">return</span>;
+<a name="l00345"></a>00345 }
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29"></a><!-- doxytag: member="users.h::force_nickchange" ref="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29" args="(userrec *user, const char *newnick)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void force_nickchange </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>newnick</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00769">769</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline()</a>, <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, and <a class="el" href="inspircd_8h-source.html#l00080">serverstats::statsCollisions</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00385">Server::ChangeUserNick()</a>.<div class="fragment"><pre class="fragment"><a name="l00770"></a>00770 {
+<a name="l00771"></a>00771 <span class="keywordtype">char</span> nick[MAXBUF];
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00773"></a>00773
+<a name="l00774"></a>00774 strcpy(nick,<span class="stringliteral">""</span>);
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreNick(user,newnick));
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (MOD_RESULT) {
+<a name="l00778"></a>00778 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00779"></a>00779 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00780"></a>00780 <span class="keywordflow">return</span>;
+<a name="l00781"></a>00781 }
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (<a class="code" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline</a>(newnick))
+<a name="l00783"></a>00783 {
+<a name="l00784"></a>00784 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00785"></a>00785 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00786"></a>00786 <span class="keywordflow">return</span>;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (user)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 <span class="keywordflow">if</span> (newnick)
+<a name="l00792"></a>00792 {
+<a name="l00793"></a>00793 strncpy(nick,newnick,MAXBUF);
+<a name="l00794"></a>00794 }
+<a name="l00795"></a>00795 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7)
+<a name="l00796"></a>00796 {
+<a name="l00797"></a>00797 <span class="keywordtype">char</span>* pars[1];
+<a name="l00798"></a>00798 pars[0] = nick;
+<a name="l00799"></a>00799 <a class="code" href="namespaceirc.html#string">std::string</a> cmd = <span class="stringliteral">"NICK"</span>;
+<a name="l00800"></a>00800 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#Parser">Parser</a>->CallHandler(cmd,pars,1,user);
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 }
+<a name="l00803"></a>00803 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="FullConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::FullConnectUser" ref="FullConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void FullConnectUser </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top"> ) </td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00647">647</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline()</a>, <a class="el" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline()</a>, <a class="el" href="inspircd__io_8h-source.html#l00075">ServerConfig::Network</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, <a class="el" href="inspircd_8h-source.html#l00084">serverstats::statsConnects</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00648"></a>00648 {
+<a name="l00649"></a>00649 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#stats">stats</a>-><a class="code" href="classserverstats.html#statsConnects">statsConnects</a>++;
+<a name="l00650"></a>00650 user-><a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00651"></a>00651 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ConnectUser: %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keywordflow">if</span> ((strcmp(Passwd(user),<span class="stringliteral">""</span>)) && (!user-><a class="code" href="classconnection.html#haspassed">haspassed</a>))
+<a name="l00654"></a>00654 {
+<a name="l00655"></a>00655 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Invalid password"</span>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span>;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 <span class="keywordflow">if</span> (IsDenied(user))
+<a name="l00659"></a>00659 {
+<a name="l00660"></a>00660 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Unauthorised connection"</span>);
+<a name="l00661"></a>00661 <span class="keywordflow">return</span>;
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a>00664 <span class="keywordtype">char</span> match_against[MAXBUF];
+<a name="l00665"></a>00665 snprintf(match_against,MAXBUF,<span class="stringliteral">"%s@%s"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00666"></a>00666 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(match_against);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (!e)
+<a name="l00668"></a>00668 {
+<a name="l00669"></a>00669 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline</a>(match_against);
+<a name="l00670"></a>00670 <span class="keywordflow">if</span> (r)
+<a name="l00671"></a>00671 {
+<a name="l00672"></a>00672 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00673"></a>00673 snprintf(reason,MAXBUF,<span class="stringliteral">"G-Lined: %s"</span>,r);
+<a name="l00674"></a>00674 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00675"></a>00675 <span class="keywordflow">return</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 r = <a class="code" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline</a>(user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r)
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00681"></a>00681 snprintf(reason,MAXBUF,<span class="stringliteral">"K-Lined: %s"</span>,r);
+<a name="l00682"></a>00682 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00683"></a>00683 <span class="keywordflow">return</span>;
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 }
+<a name="l00686"></a>00686
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE Auth :Welcome to \002%s\002!"</span>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>);
+<a name="l00689"></a>00689 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"001 %s :Welcome to the %s IRC Network %s!%s@%s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00690"></a>00690 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"002 %s :Your host is %s, running version %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00691"></a>00691 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"003 %s :This server was created %s %s"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,__TIME__,__DATE__);
+<a name="l00692"></a>00692 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00693"></a>00693 <span class="comment">// the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...</span>
+<a name="l00694"></a>00694 std::stringstream v;
+<a name="l00695"></a>00695 v << <span class="stringliteral">"WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS="</span> << MAXCHANS;
+<a name="l00696"></a>00696 v << <span class="stringliteral">" MAXBANS=60 NICKLEN="</span> << NICKMAX;
+<a name="l00697"></a>00697 v << <span class="stringliteral">" TOPICLEN="</span> << MAXTOPIC << <span class="stringliteral">" KICKLEN="</span> << MAXKICK << <span class="stringliteral">" MAXTARGETS=20 AWAYLEN="</span> << MAXAWAY << <span class="stringliteral">" CHANMODES=ohvb,k,l,psmnti NETWORK="</span>;
+<a name="l00698"></a>00698 v << <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00699"></a>00699 <a class="code" href="namespaceirc.html#string">std::string</a> data005 = v.str();
+<a name="l00700"></a>00700 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> On005Numeric(data005);
+<a name="l00701"></a>00701 <span class="comment">// anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...</span>
+<a name="l00702"></a>00702 <span class="comment">// so i'd better split it :)</span>
+<a name="l00703"></a>00703 std::stringstream out(data005);
+<a name="l00704"></a>00704 <a class="code" href="namespaceirc.html#string">std::string</a> token = <span class="stringliteral">""</span>;
+<a name="l00705"></a>00705 <a class="code" href="namespaceirc.html#string">std::string</a> line5 = <span class="stringliteral">""</span>;
+<a name="l00706"></a>00706 <span class="keywordtype">int</span> token_counter = 0;
+<a name="l00707"></a>00707 <span class="keywordflow">while</span> (!out.eof())
+<a name="l00708"></a>00708 {
+<a name="l00709"></a>00709 out >> token;
+<a name="l00710"></a>00710 line5 = line5 + token + <span class="stringliteral">" "</span>;
+<a name="l00711"></a>00711 token_counter++;
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> ((token_counter >= 13) || (out.eof() == <span class="keyword">true</span>))
+<a name="l00713"></a>00713 {
+<a name="l00714"></a>00714 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"005 %s %s:are supported by this server"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,line5.c_str());
+<a name="l00715"></a>00715 line5 = <span class="stringliteral">""</span>;
+<a name="l00716"></a>00716 token_counter = 0;
+<a name="l00717"></a>00717 }
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 ShowMOTD(user);
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="comment">// fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out</span>
+<a name="l00722"></a>00722 <span class="comment">// onto the network and produce 'fake direction'</span>
+<a name="l00723"></a>00723 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserConnect(user);
+<a name="l00724"></a>00724 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnGlobalConnect(user);
+<a name="l00725"></a>00725 user-><a class="code" href="classconnection.html#registered">registered</a> = 7;
+<a name="l00726"></a>00726 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client connecting on port %lu: %s!%s@%s [%s]"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#port">port</a>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,user-><a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>);
+<a name="l00727"></a>00727 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.h::kill_link" ref="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00349">349</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00390">Server::QuitUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00350"></a>00350 {
+<a name="l00351"></a>00351 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 strncpy(reason,r,MAXBUF);
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (strlen(reason)>MAXQUIT)
+<a name="l00358"></a>00358 {
+<a name="l00359"></a>00359 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00363"></a>00363 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00364"></a>00364 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00367"></a>00367 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00368"></a>00368 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 user-><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>))
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>)-><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00382"></a>00382 user-><a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="comment">// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything</span>
+<a name="l00386"></a>00386 <span class="comment">// if they were an oper with +s.</span>
+<a name="l00387"></a>00387 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00388"></a>00388 purge_empty_chans(user);
+<a name="l00389"></a>00389 <span class="comment">// fix by brain: only show local quits because we only show local connects (it just makes SENSE)</span>
+<a name="l00390"></a>00390 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00391"></a>00391 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client exiting: %s!%s@%s [%s]"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(user);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00398"></a>00398 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-><a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00404"></a>00404 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keyword">delete</span> user;
+<a name="l00410"></a>00410 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.h::kill_link_silent" ref="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link_silent </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char * </td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00412">412</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 strncpy(reason,r,MAXBUF);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (strlen(reason)>MAXQUIT)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00426"></a>00426 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-><a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-><a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,reason);
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 user-><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00432"></a>00432 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>))
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <a class="code" href="channels_8cpp.html#Config">Config</a>-><a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-><a class="code" href="classconnection.html#port">port</a>)-><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-><a class="code" href="classInspIRCd.html#SE">SE</a>-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-><a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00445"></a>00445 user-><a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00449"></a>00449 purge_empty_chans(user);
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00453"></a>00453 {
+<a name="l00454"></a>00454 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (user-><a class="code" href="classconnection.html#fd">fd</a> > -1)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-><a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00459"></a>00459 {
+<a name="l00460"></a>00460 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00461"></a>00461 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 <span class="keyword">delete</span> user;
+<a name="l00467"></a>00467 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29"></a><!-- doxytag: member="users.h::ReHashNick" ref="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29" args="(char *Old, char *New)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* ReHashNick </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">char * </td>
+ <td class="mdname" nowrap> <em>Old</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char * </td>
+ <td class="mdname" nowrap> <em>New</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00743">743</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="comment">//user_hash::iterator newnick;</span>
+<a name="l00746"></a>00746 user_hash::iterator oldnick = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(Old);
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: %s %s"</span>,Old,New);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (!strcasecmp(Old,New))
+<a name="l00751"></a>00751 {
+<a name="l00752"></a>00752 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"old nick is new nick, skipping"</span>);
+<a name="l00753"></a>00753 <span class="keywordflow">return</span> oldnick->second;
+<a name="l00754"></a>00754 }
+<a name="l00755"></a>00755
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (oldnick == <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end()) <span class="keywordflow">return</span> NULL; <span class="comment">/* doesnt exist */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Found hashed nick %s"</span>,Old);
+<a name="l00759"></a>00759
+<a name="l00760"></a>00760 <a class="code" href="classuserrec.html">userrec</a>* olduser = oldnick->second;
+<a name="l00761"></a>00761 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New] = olduser;
+<a name="l00762"></a>00762 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(oldnick);
+<a name="l00763"></a>00763
+<a name="l00764"></a>00764 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Nick rehashed as %s"</span>,New);
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New];
+<a name="l00767"></a>00767 }
+</pre></div>
+<p>
+ </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 413,412 512,439
-rect $modules_8cpp-source.html 413,311 512,337
-rect $users_8cpp-source.html 280,159 360,185
-rect $commands_8h-source.html 125,108 224,135
-rect $globals_8h-source.html 137,361 212,388
-rect $typedefs_8h-source.html 277,361 363,388
-rect $inspircd_8h-source.html 135,209 215,236
-rect $cull__list_8h-source.html 136,412 213,439
-rect $message_8h-source.html 277,564 363,591
-rect $mode_8h-source.html 287,260 353,287
-rect $userprocess_8h-source.html 123,564 227,591
-rect $xline_8h-source.html 289,463 351,489
+rect $channels_8cpp-source.html 531,235 629,261
+rect $modules_8cpp-source.html 531,387 629,413
+rect $users_8cpp-source.html 540,564 620,591
+rect $commands_8h-source.html 379,615 477,641
+rect $cull__list_8h-source.html 121,311 199,337
+rect $globals_8h-source.html 249,159 324,185
+rect $typedefs_8h-source.html 385,260 471,287
+rect $inspircd_8h-source.html 247,412 327,439
+rect $userprocess_8h-source.html 376,463 480,489
+rect $mode_8h-source.html 127,361 193,388
+rect $message_8h-source.html 385,311 471,337
+rect $xline_8h-source.html 397,513 459,540
-c6314acd91a09c69378b916056cacc46
\ No newline at end of file
+b1eec238e42f7d91bc0d7f5a3b91a235
\ No newline at end of file
base referer
rect $channels_8h-source.html 128,108 213,135
-rect $connection_8h-source.html 121,58 220,84
+rect $connection_8h-source.html 121,159 220,185
+rect $hashcomp_8h-source.html 124,57 217,84
-8a804bf9eb838d5cc63aad0c666de3ab
\ No newline at end of file
+24445b415c7267f43aad5464edd11467
\ No newline at end of file
<a name="l00161"></a>00161 <span class="keywordtype">bool</span> <a class="code" href="xline_8h.html#qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29">qline_make_global</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* nickname);
<a name="l00162"></a>00162
<a name="l00163"></a>00163 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
Include dependency graph for xline.h:<p><center><img src="xline_8h__incl.gif" border="0" usemap="#xline.h_map" alt=""></center>
<map name="xline.h_map">
<area href="users_8h-source.html" shape="rect" coords="124,260,188,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="248,210,333,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="241,362,340,388" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="248,209,333,236" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="241,412,340,439" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="244,311,337,337" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="xline_8h__dep__incl.gif" border="0" usemap="#xline.hdep_map" alt=""></center>
<map name="xline.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="120,7,219,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="120,58,219,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="120,7,219,33" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="120,57,219,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="130,108,210,135" alt="">
</map>
<p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00660">Server::AddELine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00659">Server::AddELine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::add_gline" ref="add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29" args="(long duration, const char *source, const char *reason, const char *hostmask)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00640">Server::AddGLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00639">Server::AddGLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::add_kline" ref="add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29" args="(long duration, const char *source, const char *reason, const char *hostmask)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00655">Server::AddKLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00654">Server::AddKLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29"></a><!-- doxytag: member="xline.h::add_qline" ref="add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29" args="(long duration, const char *source, const char *reason, const char *nickname)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00645">Server::AddQLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00644">Server::AddQLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29"></a><!-- doxytag: member="xline.h::add_zline" ref="add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29" args="(long duration, const char *source, const char *reason, const char *ipaddr)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00650">Server::AddZLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00649">Server::AddZLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="apply_5Flines_28const_20int_20What_29"></a><!-- doxytag: member="xline.h::apply_lines" ref="apply_5Flines_28const_20int_20What_29" args="(const int What)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00685">Server::DelELine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00684">Server::DelELine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fgline_28const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::del_gline" ref="del_5Fgline_28const_20char_20_2Ahostmask_29" args="(const char *hostmask)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00665">Server::DelGLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00664">Server::DelGLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fkline_28const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::del_kline" ref="del_5Fkline_28const_20char_20_2Ahostmask_29" args="(const char *hostmask)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00680">Server::DelKLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00679">Server::DelKLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fqline_28const_20char_20_2Anickname_29"></a><!-- doxytag: member="xline.h::del_qline" ref="del_5Fqline_28const_20char_20_2Anickname_29" args="(const char *nickname)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::DelQLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00669">Server::DelQLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fzline_28const_20char_20_2Aipaddr_29"></a><!-- doxytag: member="xline.h::del_zline" ref="del_5Fzline_28const_20char_20_2Aipaddr_29" args="(const char *ipaddr)" --><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00674">Server::DelZLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="eline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29"></a><!-- doxytag: member="xline.h::eline_set_creation_time" ref="eline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29" args="(char *host, time_t create_time)" --><p>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fgline_28const_20char_20_2Ahost_29"></a><!-- doxytag: member="xline.h::matches_gline" ref="matches_5Fgline_28const_20char_20_2Ahost_29" args="(const char *host)" --><p>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fkline_28const_20char_20_2Ahost_29"></a><!-- doxytag: member="xline.h::matches_kline" ref="matches_5Fkline_28const_20char_20_2Ahost_29" args="(const char *host)" --><p>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fqline_28const_20char_20_2Anick_29"></a><!-- doxytag: member="xline.h::matches_qline" ref="matches_5Fqline_28const_20char_20_2Anick_29" args="(const char *nick)" --><p>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fzline_28const_20char_20_2Aipaddr_29"></a><!-- doxytag: member="xline.h::matches_zline" ref="matches_5Fzline_28const_20char_20_2Aipaddr_29" args="(const char *ipaddr)" --><p>
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29"></a><!-- doxytag: member="xline.h::qline_make_global" ref="qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29" args="(const char *nickname)" --><p>
Definition at line <a class="el" href="xline_8h-source.html#l00034">34</a> of file <a class="el" href="xline_8h-source.html">xline.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
base referer
-rect $channels_8cpp-source.html 120,7 219,34
-rect $modules_8cpp-source.html 120,58 219,84
+rect $channels_8cpp-source.html 120,7 219,33
+rect $modules_8cpp-source.html 120,57 219,84
+rect $users_8cpp-source.html 130,108 210,135
-94b61de8eaa885e874543fc93fa71194
\ No newline at end of file
+c8590565d44b3716ffcd0bac63383582
\ No newline at end of file
base referer
rect $users_8h-source.html 124,260 188,287
-rect $channels_8h-source.html 248,210 333,236
-rect $connection_8h-source.html 241,362 340,388
+rect $channels_8h-source.html 248,209 333,236
+rect $connection_8h-source.html 241,412 340,439
+rect $hashcomp_8h-source.html 244,311 337,337
-c19192f2db3c2ad86cf37af32b2260b3
\ No newline at end of file
+923f635ea1c21953bb7135ac47173dce
\ No newline at end of file