diff options
Diffstat (limited to 'docs/module-doc/modules_8cpp-source.html')
-rw-r--r-- | docs/module-doc/modules_8cpp-source.html | 923 |
1 files changed, 464 insertions, 459 deletions
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html index 9a36d4e5b..0ecd0c95b 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -338,611 +338,616 @@ <a name="l00329"></a>00329 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="l00330"></a>00330 } <a name="l00331"></a>00331 -<a name="l00332"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00332</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="l00332"></a><a class="code" href="classServer.html#GetConfig_28_29">00332</a> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">Server::GetConfig</a>() <a name="l00333"></a>00333 { -<a name="l00334"></a>00334 <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="l00335"></a>00335 { -<a name="l00336"></a>00336 <span class="keywordflow">if</span> (*a == sock) -<a name="l00337"></a>00337 { -<a name="l00338"></a>00338 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a); -<a name="l00339"></a>00339 <span class="keywordflow">return</span>; -<a name="l00340"></a>00340 } -<a name="l00341"></a>00341 } -<a name="l00342"></a>00342 } -<a name="l00343"></a>00343 -<a name="l00344"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00344</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="l00345"></a>00345 { -<a name="l00346"></a>00346 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00334"></a>00334 <span class="keywordflow">return</span> Config; +<a name="l00335"></a>00335 } +<a name="l00336"></a>00336 +<a name="l00337"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00337</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="l00338"></a>00338 { +<a name="l00339"></a>00339 <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="l00340"></a>00340 { +<a name="l00341"></a>00341 <span class="keywordflow">if</span> (*a == sock) +<a name="l00342"></a>00342 { +<a name="l00343"></a>00343 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</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="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00349</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="l00349"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00349</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="l00350"></a>00350 { -<a name="l00351"></a>00351 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF]; -<a name="l00352"></a>00352 strlcpy(literal,sliteral.c_str(),MAXBUF); -<a name="l00353"></a>00353 strlcpy(pattern,spattern.c_str(),MAXBUF); -<a name="l00354"></a>00354 <span class="keywordflow">return</span> match(literal,pattern); -<a name="l00355"></a>00355 } -<a name="l00356"></a>00356 -<a name="l00357"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00357</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="l00358"></a>00358 { -<a name="l00359"></a>00359 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str()); +<a name="l00351"></a>00351 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00352"></a>00352 } +<a name="l00353"></a>00353 +<a name="l00354"></a><a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00354</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="l00355"></a>00355 { +<a name="l00356"></a>00356 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF]; +<a name="l00357"></a>00357 strlcpy(literal,sliteral.c_str(),MAXBUF); +<a name="l00358"></a>00358 strlcpy(pattern,spattern.c_str(),MAXBUF); +<a name="l00359"></a>00359 <span class="keywordflow">return</span> match(literal,pattern); <a name="l00360"></a>00360 } <a name="l00361"></a>00361 -<a name="l00362"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00362</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="l00362"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00362</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="l00363"></a>00363 { -<a name="l00364"></a>00364 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>); +<a name="l00364"></a>00364 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str()); <a name="l00365"></a>00365 } <a name="l00366"></a>00366 -<a name="l00367"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00367</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="l00367"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00367</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="l00368"></a>00368 { -<a name="l00369"></a>00369 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>); +<a name="l00369"></a>00369 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>); <a name="l00370"></a>00370 } <a name="l00371"></a>00371 -<a name="l00372"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00372</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="l00372"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00372</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="l00373"></a>00373 { -<a name="l00374"></a>00374 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl; -<a name="l00375"></a>00375 userl.clear(); -<a name="l00376"></a>00376 std::vector<char*> *list = chan-><a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>(); -<a name="l00377"></a>00377 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++) -<a name="l00378"></a>00378 { -<a name="l00379"></a>00379 <span class="keywordtype">char</span>* o = *i; -<a name="l00380"></a>00380 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o); -<a name="l00381"></a>00381 } -<a name="l00382"></a>00382 <span class="keywordflow">return</span> userl; -<a name="l00383"></a>00383 } -<a name="l00384"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00384</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="l00385"></a>00385 { -<a name="l00386"></a>00386 force_nickchange(user,nickname.c_str()); -<a name="l00387"></a>00387 } -<a name="l00388"></a>00388 -<a name="l00389"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00389</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="l00374"></a>00374 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>); +<a name="l00375"></a>00375 } +<a name="l00376"></a>00376 +<a name="l00377"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00377</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="l00378"></a>00378 { +<a name="l00379"></a>00379 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl; +<a name="l00380"></a>00380 userl.clear(); +<a name="l00381"></a>00381 std::vector<char*> *list = chan-><a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>(); +<a name="l00382"></a>00382 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++) +<a name="l00383"></a>00383 { +<a name="l00384"></a>00384 <span class="keywordtype">char</span>* o = *i; +<a name="l00385"></a>00385 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o); +<a name="l00386"></a>00386 } +<a name="l00387"></a>00387 <span class="keywordflow">return</span> userl; +<a name="l00388"></a>00388 } +<a name="l00389"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00389</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="l00390"></a>00390 { -<a name="l00391"></a>00391 kill_link(user,reason.c_str()); +<a name="l00391"></a>00391 force_nickchange(user,nickname.c_str()); <a name="l00392"></a>00392 } <a name="l00393"></a>00393 -<a name="l00394"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00394</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="l00394"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00394</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="l00395"></a>00395 { -<a name="l00396"></a>00396 <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="l00396"></a>00396 kill_link(user,reason.c_str()); <a name="l00397"></a>00397 } <a name="l00398"></a>00398 -<a name="l00399"></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">00399</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="l00399"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00399</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="l00400"></a>00400 { -<a name="l00401"></a>00401 call_handler(commandname.c_str(),parameters,pcnt,user); +<a name="l00401"></a>00401 <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="l00402"></a>00402 } <a name="l00403"></a>00403 -<a name="l00404"></a><a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00404</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="l00404"></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">00404</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="l00405"></a>00405 { -<a name="l00406"></a>00406 <span class="keywordflow">return</span> is_valid_cmd(commandname.c_str(), pcnt, user); +<a name="l00406"></a>00406 call_handler(commandname.c_str(),parameters,pcnt,user); <a name="l00407"></a>00407 } <a name="l00408"></a>00408 -<a name="l00409"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00409</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="l00409"></a><a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00409</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="l00410"></a>00410 { -<a name="l00411"></a>00411 log(level,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00411"></a>00411 <span class="keywordflow">return</span> is_valid_cmd(commandname.c_str(), pcnt, user); <a name="l00412"></a>00412 } <a name="l00413"></a>00413 -<a name="l00414"></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">00414</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, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source) +<a name="l00414"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00414</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="l00415"></a>00415 { -<a name="l00416"></a>00416 <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="l00416"></a>00416 log(level,<span class="stringliteral">"%s"</span>,s.c_str()); <a name="l00417"></a>00417 } <a name="l00418"></a>00418 -<a name="l00419"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00419</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="l00419"></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">00419</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, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source) <a name="l00420"></a>00420 { -<a name="l00421"></a>00421 <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="l00421"></a>00421 <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="l00422"></a>00422 } <a name="l00423"></a>00423 -<a name="l00424"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00424</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="l00424"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00424</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="l00425"></a>00425 { -<a name="l00426"></a>00426 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00426"></a>00426 <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="l00427"></a>00427 } <a name="l00428"></a>00428 -<a name="l00429"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00429</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="l00429"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00429</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="l00430"></a>00430 { -<a name="l00431"></a>00431 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00431"></a>00431 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); <a name="l00432"></a>00432 } <a name="l00433"></a>00433 -<a name="l00434"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00434</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="l00434"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00434</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="l00435"></a>00435 { -<a name="l00436"></a>00436 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00436"></a>00436 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); <a name="l00437"></a>00437 } <a name="l00438"></a>00438 -<a name="l00439"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00439</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="l00439"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00439</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="l00440"></a>00440 { -<a name="l00441"></a>00441 <span class="keywordflow">if</span> (!Source) -<a name="l00442"></a>00442 { -<a name="l00443"></a>00443 <span class="comment">// if source is NULL, then the message originates from the local server</span> -<a name="l00444"></a>00444 Write(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="l00445"></a>00445 } -<a name="l00446"></a>00446 <span class="keywordflow">else</span> +<a name="l00441"></a>00441 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00442"></a>00442 } +<a name="l00443"></a>00443 +<a name="l00444"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00444</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="l00445"></a>00445 { +<a name="l00446"></a>00446 <span class="keywordflow">if</span> (!Source) <a name="l00447"></a>00447 { -<a name="l00448"></a>00448 <span class="comment">// otherwise it comes from the user specified</span> -<a name="l00449"></a>00449 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00448"></a>00448 <span class="comment">// if source is NULL, then the message originates from the local server</span> +<a name="l00449"></a>00449 Write(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="l00450"></a>00450 } -<a name="l00451"></a>00451 } -<a name="l00452"></a>00452 -<a name="l00453"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00453</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="l00454"></a>00454 { -<a name="l00455"></a>00455 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str()); +<a name="l00451"></a>00451 <span class="keywordflow">else</span> +<a name="l00452"></a>00452 { +<a name="l00453"></a>00453 <span class="comment">// otherwise it comes from the user specified</span> +<a name="l00454"></a>00454 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00455"></a>00455 } <a name="l00456"></a>00456 } <a name="l00457"></a>00457 -<a name="l00458"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00458</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="l00458"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00458</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="l00459"></a>00459 { -<a name="l00460"></a>00460 <span class="keywordflow">if</span> (IncludeSender) -<a name="l00461"></a>00461 { -<a name="l00462"></a>00462 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); -<a name="l00463"></a>00463 } -<a name="l00464"></a>00464 <span class="keywordflow">else</span> -<a name="l00465"></a>00465 { -<a name="l00466"></a>00466 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); -<a name="l00467"></a>00467 } -<a name="l00468"></a>00468 } -<a name="l00469"></a>00469 -<a name="l00470"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00470</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="l00471"></a>00471 { -<a name="l00472"></a>00472 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0); +<a name="l00460"></a>00460 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str()); +<a name="l00461"></a>00461 } +<a name="l00462"></a>00462 +<a name="l00463"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00463</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="l00464"></a>00464 { +<a name="l00465"></a>00465 <span class="keywordflow">if</span> (IncludeSender) +<a name="l00466"></a>00466 { +<a name="l00467"></a>00467 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00468"></a>00468 } +<a name="l00469"></a>00469 <span class="keywordflow">else</span> +<a name="l00470"></a>00470 { +<a name="l00471"></a>00471 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); +<a name="l00472"></a>00472 } <a name="l00473"></a>00473 } <a name="l00474"></a>00474 -<a name="l00475"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00475</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="l00475"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00475</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="l00476"></a>00476 { -<a name="l00477"></a>00477 <span class="keywordflow">if</span> (IncludeSender) -<a name="l00478"></a>00478 { -<a name="l00479"></a>00479 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str()); -<a name="l00480"></a>00480 } -<a name="l00481"></a>00481 <span class="keywordflow">else</span> -<a name="l00482"></a>00482 { -<a name="l00483"></a>00483 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str()); -<a name="l00484"></a>00484 } -<a name="l00485"></a>00485 } -<a name="l00486"></a>00486 -<a name="l00487"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00487</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="l00488"></a>00488 { -<a name="l00489"></a>00489 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str()); +<a name="l00477"></a>00477 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0); +<a name="l00478"></a>00478 } +<a name="l00479"></a>00479 +<a name="l00480"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00480</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="l00481"></a>00481 { +<a name="l00482"></a>00482 <span class="keywordflow">if</span> (IncludeSender) +<a name="l00483"></a>00483 { +<a name="l00484"></a>00484 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str()); +<a name="l00485"></a>00485 } +<a name="l00486"></a>00486 <span class="keywordflow">else</span> +<a name="l00487"></a>00487 { +<a name="l00488"></a>00488 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str()); +<a name="l00489"></a>00489 } <a name="l00490"></a>00490 } <a name="l00491"></a>00491 -<a name="l00492"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00492</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="l00492"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00492</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="l00493"></a>00493 { -<a name="l00494"></a>00494 <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="l00494"></a>00494 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str()); <a name="l00495"></a>00495 } <a name="l00496"></a>00496 -<a name="l00497"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00497</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="l00497"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00497</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="l00498"></a>00498 { -<a name="l00499"></a>00499 <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="l00499"></a>00499 <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="l00500"></a>00500 } <a name="l00501"></a>00501 -<a name="l00502"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00502</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="l00502"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00502</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="l00503"></a>00503 { -<a name="l00504"></a>00504 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0); +<a name="l00504"></a>00504 <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="l00505"></a>00505 } <a name="l00506"></a>00506 -<a name="l00507"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00507</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="l00507"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00507</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="l00508"></a>00508 { -<a name="l00509"></a>00509 <span class="keywordflow">return</span> Find(nick); +<a name="l00509"></a>00509 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0); <a name="l00510"></a>00510 } <a name="l00511"></a>00511 -<a name="l00512"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00512</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="l00512"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00512</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="l00513"></a>00513 { -<a name="l00514"></a>00514 <span class="keywordflow">return</span> (socket < 65536 ? fd_ref_table[socket] : NULL); +<a name="l00514"></a>00514 <span class="keywordflow">return</span> Find(nick); <a name="l00515"></a>00515 } <a name="l00516"></a>00516 -<a name="l00517"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00517</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="l00517"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00517</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="l00518"></a>00518 { -<a name="l00519"></a>00519 <span class="keywordflow">return</span> FindChan(channel.c_str()); +<a name="l00519"></a>00519 <span class="keywordflow">return</span> (socket < 65536 ? fd_ref_table[socket] : NULL); <a name="l00520"></a>00520 } <a name="l00521"></a>00521 -<a name="l00522"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00522</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="l00522"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00522</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="l00523"></a>00523 { -<a name="l00524"></a>00524 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan); +<a name="l00524"></a>00524 <span class="keywordflow">return</span> FindChan(channel.c_str()); <a name="l00525"></a>00525 } <a name="l00526"></a>00526 -<a name="l00527"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00527</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="l00527"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00527</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="l00528"></a>00528 { -<a name="l00529"></a>00529 <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="l00529"></a>00529 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan); <a name="l00530"></a>00530 } <a name="l00531"></a>00531 -<a name="l00532"></a><a class="code" href="classServer.html#GetServerName_28_29">00532</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="l00532"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00532</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="l00533"></a>00533 { -<a name="l00534"></a>00534 <span class="keywordflow">return</span> getservername(); +<a name="l00534"></a>00534 <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="l00535"></a>00535 } <a name="l00536"></a>00536 -<a name="l00537"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00537</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="l00537"></a><a class="code" href="classServer.html#GetServerName_28_29">00537</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="l00538"></a>00538 { -<a name="l00539"></a>00539 <span class="keywordflow">return</span> getnetworkname(); +<a name="l00539"></a>00539 <span class="keywordflow">return</span> getservername(); <a name="l00540"></a>00540 } <a name="l00541"></a>00541 -<a name="l00542"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00542</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="l00542"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00542</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="l00543"></a>00543 { -<a name="l00544"></a>00544 <span class="keywordflow">return</span> getserverdesc(); +<a name="l00544"></a>00544 <span class="keywordflow">return</span> getnetworkname(); <a name="l00545"></a>00545 } <a name="l00546"></a>00546 -<a name="l00547"></a><a class="code" href="classServer.html#GetAdmin_28_29">00547</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>() +<a name="l00547"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00547</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="l00548"></a>00548 { -<a name="l00549"></a>00549 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick()); +<a name="l00549"></a>00549 <span class="keywordflow">return</span> getserverdesc(); <a name="l00550"></a>00550 } <a name="l00551"></a>00551 -<a name="l00552"></a>00552 -<a name="l00553"></a>00553 -<a name="l00554"></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">00554</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="l00555"></a>00555 { -<a name="l00556"></a>00556 <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="l00557"></a>00557 { -<a name="l00558"></a>00558 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>) -<a name="l00559"></a>00559 { -<a name="l00560"></a>00560 log(<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="l00561"></a>00561 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00562"></a>00562 } -<a name="l00563"></a>00563 <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="l00552"></a><a class="code" href="classServer.html#GetAdmin_28_29">00552</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>() +<a name="l00553"></a>00553 { +<a name="l00554"></a>00554 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick()); +<a name="l00555"></a>00555 } +<a name="l00556"></a>00556 +<a name="l00557"></a>00557 +<a name="l00558"></a>00558 +<a name="l00559"></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">00559</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="l00560"></a>00560 { +<a name="l00561"></a>00561 <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="l00562"></a>00562 { +<a name="l00563"></a>00563 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>) <a name="l00564"></a>00564 { -<a name="l00565"></a>00565 log(<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="l00565"></a>00565 log(<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="l00566"></a>00566 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00567"></a>00567 } -<a name="l00568"></a>00568 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1)) +<a name="l00568"></a>00568 <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="l00569"></a>00569 { -<a name="l00570"></a>00570 log(<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="l00570"></a>00570 log(<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="l00571"></a>00571 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00572"></a>00572 } -<a name="l00573"></a>00573 <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="l00574"></a>00574 } -<a name="l00575"></a>00575 <span class="keywordflow">else</span> -<a name="l00576"></a>00576 { -<a name="l00577"></a>00577 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>); -<a name="l00578"></a>00578 } -<a name="l00579"></a>00579 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00580"></a>00580 } -<a name="l00581"></a>00581 -<a name="l00582"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00582</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="l00583"></a>00583 { -<a name="l00584"></a>00584 <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="l00585"></a>00585 <span class="keywordflow">if</span> (res) -<a name="l00586"></a>00586 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar); -<a name="l00587"></a>00587 <span class="keywordflow">return</span> res; -<a name="l00588"></a>00588 } -<a name="l00589"></a>00589 -<a name="l00590"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00590</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="l00591"></a>00591 { -<a name="l00592"></a>00592 <span class="keywordflow">return</span> usercount(c); +<a name="l00573"></a>00573 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1)) +<a name="l00574"></a>00574 { +<a name="l00575"></a>00575 log(<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="l00576"></a>00576 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00577"></a>00577 } +<a name="l00578"></a>00578 <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="l00579"></a>00579 } +<a name="l00580"></a>00580 <span class="keywordflow">else</span> +<a name="l00581"></a>00581 { +<a name="l00582"></a>00582 log(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>); +<a name="l00583"></a>00583 } +<a name="l00584"></a>00584 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00585"></a>00585 } +<a name="l00586"></a>00586 +<a name="l00587"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00587</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="l00588"></a>00588 { +<a name="l00589"></a>00589 <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="l00590"></a>00590 <span class="keywordflow">if</span> (res) +<a name="l00591"></a>00591 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar); +<a name="l00592"></a>00592 <span class="keywordflow">return</span> res; <a name="l00593"></a>00593 } <a name="l00594"></a>00594 -<a name="l00595"></a>00595 -<a name="l00596"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00596</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="l00597"></a>00597 { -<a name="l00598"></a>00598 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#fd">fd</a>; -<a name="l00599"></a>00599 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="l00600"></a>00600 user-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>(); -<a name="l00601"></a>00601 Write(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="l00602"></a>00602 SE-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd); -<a name="l00603"></a>00603 shutdown(old_fd,2); -<a name="l00604"></a>00604 close(old_fd); -<a name="l00605"></a>00605 <span class="keywordflow">return</span> <span class="keyword">true</span>; -<a name="l00606"></a>00606 } -<a name="l00607"></a>00607 -<a name="l00608"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00608</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="l00609"></a>00609 { -<a name="l00610"></a>00610 zombie-><a class="code" href="classconnection.html#fd">fd</a> = alive-><a class="code" href="classconnection.html#fd">fd</a>; -<a name="l00611"></a>00611 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="l00612"></a>00612 alive-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>(); -<a name="l00613"></a>00613 Write(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="l00614"></a>00614 kill_link(alive,message.c_str()); -<a name="l00615"></a>00615 fd_ref_table[zombie-><a class="code" href="classconnection.html#fd">fd</a>] = zombie; -<a name="l00616"></a>00616 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < zombie->chans.size(); i++) -<a name="l00617"></a>00617 { -<a name="l00618"></a>00618 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL) -<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->name) -<a name="l00621"></a>00621 { -<a name="l00622"></a>00622 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel; -<a name="l00623"></a>00623 WriteFrom(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="l00624"></a>00624 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>) -<a name="l00625"></a>00625 { -<a name="l00626"></a>00626 WriteServ(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="l00627"></a>00627 WriteServ(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="l00628"></a>00628 } -<a name="l00629"></a>00629 userlist(zombie,Ptr); -<a name="l00630"></a>00630 WriteServ(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="l00631"></a>00631 -<a name="l00632"></a>00632 } -<a name="l00633"></a>00633 } -<a name="l00634"></a>00634 } -<a name="l00635"></a>00635 <span class="keywordflow">return</span> <span class="keyword">true</span>; -<a name="l00636"></a>00636 } -<a name="l00637"></a>00637 -<a name="l00638"></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">00638</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="l00639"></a>00639 { -<a name="l00640"></a>00640 <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="l00595"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00595</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="l00596"></a>00596 { +<a name="l00597"></a>00597 <span class="keywordflow">return</span> usercount(c); +<a name="l00598"></a>00598 } +<a name="l00599"></a>00599 +<a name="l00600"></a>00600 +<a name="l00601"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00601</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="l00602"></a>00602 { +<a name="l00603"></a>00603 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#fd">fd</a>; +<a name="l00604"></a>00604 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="l00605"></a>00605 user-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>(); +<a name="l00606"></a>00606 Write(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="l00607"></a>00607 SE-><a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd); +<a name="l00608"></a>00608 shutdown(old_fd,2); +<a name="l00609"></a>00609 close(old_fd); +<a name="l00610"></a>00610 <span class="keywordflow">return</span> <span class="keyword">true</span>; +<a name="l00611"></a>00611 } +<a name="l00612"></a>00612 +<a name="l00613"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00613</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="l00614"></a>00614 { +<a name="l00615"></a>00615 zombie-><a class="code" href="classconnection.html#fd">fd</a> = alive-><a class="code" href="classconnection.html#fd">fd</a>; +<a name="l00616"></a>00616 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="l00617"></a>00617 alive-><a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>(); +<a name="l00618"></a>00618 Write(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="l00619"></a>00619 kill_link(alive,message.c_str()); +<a name="l00620"></a>00620 fd_ref_table[zombie-><a class="code" href="classconnection.html#fd">fd</a>] = zombie; +<a name="l00621"></a>00621 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < zombie->chans.size(); i++) +<a name="l00622"></a>00622 { +<a name="l00623"></a>00623 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL) +<a name="l00624"></a>00624 { +<a name="l00625"></a>00625 <span class="keywordflow">if</span> (zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel->name) +<a name="l00626"></a>00626 { +<a name="l00627"></a>00627 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#chans">chans</a>[i].channel; +<a name="l00628"></a>00628 WriteFrom(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="l00629"></a>00629 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#topicset">topicset</a>) +<a name="l00630"></a>00630 { +<a name="l00631"></a>00631 WriteServ(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="l00632"></a>00632 WriteServ(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="l00633"></a>00633 } +<a name="l00634"></a>00634 userlist(zombie,Ptr); +<a name="l00635"></a>00635 WriteServ(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="l00636"></a>00636 +<a name="l00637"></a>00637 } +<a name="l00638"></a>00638 } +<a name="l00639"></a>00639 } +<a name="l00640"></a>00640 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00641"></a>00641 } <a name="l00642"></a>00642 -<a name="l00643"></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">00643</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="l00643"></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">00643</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="l00644"></a>00644 { -<a name="l00645"></a>00645 <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="l00645"></a>00645 <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="l00646"></a>00646 } <a name="l00647"></a>00647 -<a name="l00648"></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">00648</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="l00648"></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">00648</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="l00649"></a>00649 { -<a name="l00650"></a>00650 <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="l00650"></a>00650 <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="l00651"></a>00651 } <a name="l00652"></a>00652 -<a name="l00653"></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">00653</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="l00653"></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">00653</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="l00654"></a>00654 { -<a name="l00655"></a>00655 <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="l00655"></a>00655 <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="l00656"></a>00656 } <a name="l00657"></a>00657 -<a name="l00658"></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">00658</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="l00658"></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">00658</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="l00659"></a>00659 { -<a name="l00660"></a>00660 <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="l00660"></a>00660 <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="l00661"></a>00661 } <a name="l00662"></a>00662 -<a name="l00663"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00663</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="l00663"></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">00663</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="l00664"></a>00664 { -<a name="l00665"></a>00665 <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="l00665"></a>00665 <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="l00666"></a>00666 } <a name="l00667"></a>00667 -<a name="l00668"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00668</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="l00668"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00668</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="l00669"></a>00669 { -<a name="l00670"></a>00670 <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="l00670"></a>00670 <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="l00671"></a>00671 } <a name="l00672"></a>00672 -<a name="l00673"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00673</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="l00673"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00673</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="l00674"></a>00674 { -<a name="l00675"></a>00675 <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="l00675"></a>00675 <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="l00676"></a>00676 } <a name="l00677"></a>00677 -<a name="l00678"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00678</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="l00678"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00678</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="l00679"></a>00679 { -<a name="l00680"></a>00680 <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="l00680"></a>00680 <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="l00681"></a>00681 } <a name="l00682"></a>00682 -<a name="l00683"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00683</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="l00683"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00683</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="l00684"></a>00684 { -<a name="l00685"></a>00685 <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="l00685"></a>00685 <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="l00686"></a>00686 } <a name="l00687"></a>00687 -<a name="l00688"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00688</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="l00688"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00688</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="l00689"></a>00689 { -<a name="l00690"></a>00690 <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="l00690"></a>00690 <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="l00691"></a>00691 } <a name="l00692"></a>00692 -<a name="l00693"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00693</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="l00693"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00693</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="l00694"></a>00694 { -<a name="l00695"></a>00695 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str(); -<a name="l00696"></a>00696 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0) -<a name="l00697"></a>00697 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -<a name="l00701"></a>00701 <span class="keywordflow">if</span> (dest[i] < 32) -<a name="l00702"></a>00702 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00703"></a>00703 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -<a name="l00704"></a>00704 <span class="keywordflow">if</span> (dest[i] > 126) -<a name="l00705"></a>00705 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00706"></a>00706 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; -<a name="l00707"></a>00707 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -<a name="l00708"></a>00708 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>) -<a name="l00709"></a>00709 c++; -<a name="l00710"></a>00710 <span class="keywordflow">if</span> (c>1) -<a name="l00711"></a>00711 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00712"></a>00712 c = 0; -<a name="l00713"></a>00713 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -<a name="l00714"></a>00714 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>) -<a name="l00715"></a>00715 c++; -<a name="l00716"></a>00716 <span class="keywordflow">if</span> (c>1) -<a name="l00717"></a>00717 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00718"></a>00718 -<a name="l00719"></a>00719 <span class="keywordflow">return</span> <span class="keyword">true</span>; -<a name="l00720"></a>00720 } -<a name="l00721"></a>00721 -<a name="l00722"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00722</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="l00723"></a>00723 { -<a name="l00724"></a>00724 <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="l00725"></a>00725 { -<a name="l00726"></a>00726 <span class="keywordflow">if</span> (Config-><a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name) -<a name="l00727"></a>00727 { -<a name="l00728"></a>00728 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i]; -<a name="l00729"></a>00729 } -<a name="l00730"></a>00730 } -<a name="l00731"></a>00731 <span class="keywordflow">return</span> NULL; -<a name="l00732"></a>00732 } -<a name="l00733"></a>00733 -<a name="l00734"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00734</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>() -<a name="l00735"></a>00735 { -<a name="l00736"></a>00736 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>(); -<a name="l00737"></a>00737 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="l00738"></a>00738 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="l00739"></a>00739 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="l00740"></a>00740 <span class="keywordflow">if</span> (!this->readerror) -<a name="l00741"></a>00741 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="l00742"></a>00742 } -<a name="l00743"></a>00743 -<a name="l00744"></a>00744 -<a name="l00745"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00745</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>() -<a name="l00746"></a>00746 { -<a name="l00747"></a>00747 <span class="keywordflow">if</span> (this->cache) -<a name="l00748"></a>00748 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#cache">cache</a>; -<a name="l00749"></a>00749 <span class="keywordflow">if</span> (this->errorlog) -<a name="l00750"></a>00750 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>; -<a name="l00751"></a>00751 } -<a name="l00752"></a>00752 -<a name="l00753"></a>00753 -<a name="l00754"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00754</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="l00755"></a>00755 { -<a name="l00756"></a>00756 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>(); -<a name="l00757"></a>00757 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="l00758"></a>00758 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="l00759"></a>00759 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="l00760"></a>00760 <span class="keywordflow">if</span> (!this->readerror) -<a name="l00761"></a>00761 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="l00762"></a>00762 }; -<a name="l00763"></a>00763 -<a name="l00764"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00764</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="l00765"></a>00765 { -<a name="l00766"></a>00766 <span class="keywordtype">char</span> val[MAXBUF]; -<a name="l00767"></a>00767 <span class="keywordtype">char</span> t[MAXBUF]; -<a name="l00768"></a>00768 <span class="keywordtype">char</span> n[MAXBUF]; -<a name="l00769"></a>00769 strlcpy(t,tag.c_str(),MAXBUF); -<a name="l00770"></a>00770 strlcpy(n,name.c_str(),MAXBUF); -<a name="l00771"></a>00771 <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="l00772"></a>00772 <span class="keywordflow">if</span> (!res) -<a name="l00773"></a>00773 { -<a name="l00774"></a>00774 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="l00775"></a>00775 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; -<a name="l00776"></a>00776 } -<a name="l00777"></a>00777 <span class="keywordflow">return</span> val; -<a name="l00778"></a>00778 } -<a name="l00779"></a>00779 -<a name="l00780"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00780</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="l00781"></a>00781 { -<a name="l00782"></a>00782 <span class="keywordtype">char</span> val[MAXBUF]; -<a name="l00783"></a>00783 <span class="keywordtype">char</span> t[MAXBUF]; -<a name="l00784"></a>00784 <span class="keywordtype">char</span> n[MAXBUF]; -<a name="l00785"></a>00785 strlcpy(t,tag.c_str(),MAXBUF); -<a name="l00786"></a>00786 strlcpy(n,name.c_str(),MAXBUF); -<a name="l00787"></a>00787 <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="l00788"></a>00788 <span class="keywordflow">if</span> (!res) -<a name="l00789"></a>00789 { -<a name="l00790"></a>00790 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="l00791"></a>00791 <span class="keywordflow">return</span> <span class="keyword">false</span>; -<a name="l00792"></a>00792 } -<a name="l00793"></a>00793 <a class="code" href="namespaceirc.html#string">std::string</a> s = val; -<a name="l00794"></a>00794 <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="l00795"></a>00795 } -<a name="l00796"></a>00796 -<a name="l00797"></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">00797</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="l00798"></a>00798 { -<a name="l00799"></a>00799 <span class="keywordtype">char</span> val[MAXBUF]; -<a name="l00800"></a>00800 <span class="keywordtype">char</span> t[MAXBUF]; -<a name="l00801"></a>00801 <span class="keywordtype">char</span> n[MAXBUF]; -<a name="l00802"></a>00802 strlcpy(t,tag.c_str(),MAXBUF); -<a name="l00803"></a>00803 strlcpy(n,name.c_str(),MAXBUF); -<a name="l00804"></a>00804 <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="l00805"></a>00805 <span class="keywordflow">if</span> (!res) -<a name="l00806"></a>00806 { -<a name="l00807"></a>00807 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="l00808"></a>00808 <span class="keywordflow">return</span> 0; -<a name="l00809"></a>00809 } -<a name="l00810"></a>00810 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(val); i++) +<a name="l00695"></a>00695 <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="l00696"></a>00696 } +<a name="l00697"></a>00697 +<a name="l00698"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00698</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="l00699"></a>00699 { +<a name="l00700"></a>00700 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str(); +<a name="l00701"></a>00701 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0) +<a name="l00702"></a>00702 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00703"></a>00703 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0) +<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] < 32) +<a name="l00707"></a>00707 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<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] > 126) +<a name="l00710"></a>00710 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00711"></a>00711 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; +<a name="l00712"></a>00712 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) +<a name="l00713"></a>00713 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>) +<a name="l00714"></a>00714 c++; +<a name="l00715"></a>00715 <span class="keywordflow">if</span> (c>1) +<a name="l00716"></a>00716 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00717"></a>00717 c = 0; +<a name="l00718"></a>00718 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) +<a name="l00719"></a>00719 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>) +<a name="l00720"></a>00720 c++; +<a name="l00721"></a>00721 <span class="keywordflow">if</span> (c>1) +<a name="l00722"></a>00722 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00723"></a>00723 +<a name="l00724"></a>00724 <span class="keywordflow">return</span> <span class="keyword">true</span>; +<a name="l00725"></a>00725 } +<a name="l00726"></a>00726 +<a name="l00727"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00727</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="l00728"></a>00728 { +<a name="l00729"></a>00729 <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="l00730"></a>00730 { +<a name="l00731"></a>00731 <span class="keywordflow">if</span> (Config-><a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name) +<a name="l00732"></a>00732 { +<a name="l00733"></a>00733 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i]; +<a name="l00734"></a>00734 } +<a name="l00735"></a>00735 } +<a name="l00736"></a>00736 <span class="keywordflow">return</span> NULL; +<a name="l00737"></a>00737 } +<a name="l00738"></a>00738 +<a name="l00739"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00739</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>() +<a name="l00740"></a>00740 { +<a name="l00741"></a>00741 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>(); +<a name="l00742"></a>00742 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="l00743"></a>00743 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="l00744"></a>00744 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="l00745"></a>00745 <span class="keywordflow">if</span> (!this->readerror) +<a name="l00746"></a>00746 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="l00747"></a>00747 } +<a name="l00748"></a>00748 +<a name="l00749"></a>00749 +<a name="l00750"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00750</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>() +<a name="l00751"></a>00751 { +<a name="l00752"></a>00752 <span class="keywordflow">if</span> (this->cache) +<a name="l00753"></a>00753 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#cache">cache</a>; +<a name="l00754"></a>00754 <span class="keywordflow">if</span> (this->errorlog) +<a name="l00755"></a>00755 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#errorlog">errorlog</a>; +<a name="l00756"></a>00756 } +<a name="l00757"></a>00757 +<a name="l00758"></a>00758 +<a name="l00759"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00759</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="l00760"></a>00760 { +<a name="l00761"></a>00761 Config-><a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>(); +<a name="l00762"></a>00762 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="l00763"></a>00763 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="l00764"></a>00764 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="l00765"></a>00765 <span class="keywordflow">if</span> (!this->readerror) +<a name="l00766"></a>00766 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="l00767"></a>00767 }; +<a name="l00768"></a>00768 +<a name="l00769"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00769</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="l00770"></a>00770 { +<a name="l00771"></a>00771 <span class="keywordtype">char</span> val[MAXBUF]; +<a name="l00772"></a>00772 <span class="keywordtype">char</span> t[MAXBUF]; +<a name="l00773"></a>00773 <span class="keywordtype">char</span> n[MAXBUF]; +<a name="l00774"></a>00774 strlcpy(t,tag.c_str(),MAXBUF); +<a name="l00775"></a>00775 strlcpy(n,name.c_str(),MAXBUF); +<a name="l00776"></a>00776 <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="l00777"></a>00777 <span class="keywordflow">if</span> (!res) +<a name="l00778"></a>00778 { +<a name="l00779"></a>00779 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="l00780"></a>00780 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; +<a name="l00781"></a>00781 } +<a name="l00782"></a>00782 <span class="keywordflow">return</span> val; +<a name="l00783"></a>00783 } +<a name="l00784"></a>00784 +<a name="l00785"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00785</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="l00786"></a>00786 { +<a name="l00787"></a>00787 <span class="keywordtype">char</span> val[MAXBUF]; +<a name="l00788"></a>00788 <span class="keywordtype">char</span> t[MAXBUF]; +<a name="l00789"></a>00789 <span class="keywordtype">char</span> n[MAXBUF]; +<a name="l00790"></a>00790 strlcpy(t,tag.c_str(),MAXBUF); +<a name="l00791"></a>00791 strlcpy(n,name.c_str(),MAXBUF); +<a name="l00792"></a>00792 <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="l00793"></a>00793 <span class="keywordflow">if</span> (!res) +<a name="l00794"></a>00794 { +<a name="l00795"></a>00795 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="l00796"></a>00796 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00797"></a>00797 } +<a name="l00798"></a>00798 <a class="code" href="namespaceirc.html#string">std::string</a> s = val; +<a name="l00799"></a>00799 <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="l00800"></a>00800 } +<a name="l00801"></a>00801 +<a name="l00802"></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">00802</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="l00803"></a>00803 { +<a name="l00804"></a>00804 <span class="keywordtype">char</span> val[MAXBUF]; +<a name="l00805"></a>00805 <span class="keywordtype">char</span> t[MAXBUF]; +<a name="l00806"></a>00806 <span class="keywordtype">char</span> n[MAXBUF]; +<a name="l00807"></a>00807 strlcpy(t,tag.c_str(),MAXBUF); +<a name="l00808"></a>00808 strlcpy(n,name.c_str(),MAXBUF); +<a name="l00809"></a>00809 <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="l00810"></a>00810 <span class="keywordflow">if</span> (!res) <a name="l00811"></a>00811 { -<a name="l00812"></a>00812 <span class="keywordflow">if</span> (!isdigit(val[i])) -<a name="l00813"></a>00813 { -<a name="l00814"></a>00814 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="l00815"></a>00815 <span class="keywordflow">return</span> 0; -<a name="l00816"></a>00816 } -<a name="l00817"></a>00817 } -<a name="l00818"></a>00818 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0)) -<a name="l00819"></a>00819 { -<a name="l00820"></a>00820 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="l00821"></a>00821 <span class="keywordflow">return</span> 0; +<a name="l00812"></a>00812 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="l00813"></a>00813 <span class="keywordflow">return</span> 0; +<a name="l00814"></a>00814 } +<a name="l00815"></a>00815 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < strlen(val); i++) +<a name="l00816"></a>00816 { +<a name="l00817"></a>00817 <span class="keywordflow">if</span> (!isdigit(val[i])) +<a name="l00818"></a>00818 { +<a name="l00819"></a>00819 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="l00820"></a>00820 <span class="keywordflow">return</span> 0; +<a name="l00821"></a>00821 } <a name="l00822"></a>00822 } -<a name="l00823"></a>00823 <span class="keywordflow">return</span> atoi(val); -<a name="l00824"></a>00824 } -<a name="l00825"></a>00825 -<a name="l00826"></a><a class="code" href="classConfigReader.html#GetError_28_29">00826</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>() -<a name="l00827"></a>00827 { -<a name="l00828"></a>00828 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#error">error</a>; -<a name="l00829"></a>00829 this-><a class="code" href="classConfigReader.html#error">error</a> = 0; -<a name="l00830"></a>00830 <span class="keywordflow">return</span> olderr; -<a name="l00831"></a>00831 } -<a name="l00832"></a>00832 -<a name="l00833"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00833</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="l00834"></a>00834 { -<a name="l00835"></a>00835 <span class="keywordflow">if</span> (bail) -<a name="l00836"></a>00836 { -<a name="l00837"></a>00837 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="l00838"></a>00838 exit(0); -<a name="l00839"></a>00839 } -<a name="l00840"></a>00840 <span class="keywordflow">else</span> +<a name="l00823"></a>00823 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0)) +<a name="l00824"></a>00824 { +<a name="l00825"></a>00825 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="l00826"></a>00826 <span class="keywordflow">return</span> 0; +<a name="l00827"></a>00827 } +<a name="l00828"></a>00828 <span class="keywordflow">return</span> atoi(val); +<a name="l00829"></a>00829 } +<a name="l00830"></a>00830 +<a name="l00831"></a><a class="code" href="classConfigReader.html#GetError_28_29">00831</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>() +<a name="l00832"></a>00832 { +<a name="l00833"></a>00833 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#error">error</a>; +<a name="l00834"></a>00834 this-><a class="code" href="classConfigReader.html#error">error</a> = 0; +<a name="l00835"></a>00835 <span class="keywordflow">return</span> olderr; +<a name="l00836"></a>00836 } +<a name="l00837"></a>00837 +<a name="l00838"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00838</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="l00839"></a>00839 { +<a name="l00840"></a>00840 <span class="keywordflow">if</span> (bail) <a name="l00841"></a>00841 { -<a name="l00842"></a>00842 <span class="keywordtype">char</span> dataline[1024]; -<a name="l00843"></a>00843 <span class="keywordflow">if</span> (user) -<a name="l00844"></a>00844 { -<a name="l00845"></a>00845 WriteServ(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="l00846"></a>00846 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof()) -<a name="l00847"></a>00847 { -<a name="l00848"></a>00848 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024); -<a name="l00849"></a>00849 WriteServ(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="l00850"></a>00850 } -<a name="l00851"></a>00851 } -<a name="l00852"></a>00852 <span class="keywordflow">else</span> -<a name="l00853"></a>00853 { -<a name="l00854"></a>00854 WriteOpers(<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="l00855"></a>00855 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof()) -<a name="l00856"></a>00856 { -<a name="l00857"></a>00857 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024); -<a name="l00858"></a>00858 WriteOpers(dataline); -<a name="l00859"></a>00859 } -<a name="l00860"></a>00860 } -<a name="l00861"></a>00861 <span class="keywordflow">return</span>; -<a name="l00862"></a>00862 } -<a name="l00863"></a>00863 } -<a name="l00864"></a>00864 -<a name="l00865"></a>00865 -<a name="l00866"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00866</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="l00867"></a>00867 { -<a name="l00868"></a>00868 <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="l00869"></a>00869 } +<a name="l00842"></a>00842 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="l00843"></a>00843 exit(0); +<a name="l00844"></a>00844 } +<a name="l00845"></a>00845 <span class="keywordflow">else</span> +<a name="l00846"></a>00846 { +<a name="l00847"></a>00847 <span class="keywordtype">char</span> dataline[1024]; +<a name="l00848"></a>00848 <span class="keywordflow">if</span> (user) +<a name="l00849"></a>00849 { +<a name="l00850"></a>00850 WriteServ(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="l00851"></a>00851 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof()) +<a name="l00852"></a>00852 { +<a name="l00853"></a>00853 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024); +<a name="l00854"></a>00854 WriteServ(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="l00855"></a>00855 } +<a name="l00856"></a>00856 } +<a name="l00857"></a>00857 <span class="keywordflow">else</span> +<a name="l00858"></a>00858 { +<a name="l00859"></a>00859 WriteOpers(<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="l00860"></a>00860 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>->eof()) +<a name="l00861"></a>00861 { +<a name="l00862"></a>00862 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>->getline(dataline,1024); +<a name="l00863"></a>00863 WriteOpers(dataline); +<a name="l00864"></a>00864 } +<a name="l00865"></a>00865 } +<a name="l00866"></a>00866 <span class="keywordflow">return</span>; +<a name="l00867"></a>00867 } +<a name="l00868"></a>00868 } +<a name="l00869"></a>00869 <a name="l00870"></a>00870 -<a name="l00871"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00871</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="l00871"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00871</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="l00872"></a>00872 { -<a name="l00873"></a>00873 <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="l00873"></a>00873 <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="l00874"></a>00874 } <a name="l00875"></a>00875 -<a name="l00876"></a><a class="code" href="classConfigReader.html#Verify_28_29">00876</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>() +<a name="l00876"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00876</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="l00877"></a>00877 { -<a name="l00878"></a>00878 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#readerror">readerror</a>; +<a name="l00878"></a>00878 <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="l00879"></a>00879 } <a name="l00880"></a>00880 -<a name="l00881"></a>00881 -<a name="l00882"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00882</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="l00883"></a>00883 { -<a name="l00884"></a>00884 <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> c; -<a name="l00885"></a>00885 readfile(c,filename.c_str()); -<a name="l00886"></a>00886 this-><a class="code" href="classFileReader.html#fc">fc</a> = c; -<a name="l00887"></a>00887 } -<a name="l00888"></a>00888 -<a name="l00889"></a><a class="code" href="classFileReader.html#FileReader_28_29">00889</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>() -<a name="l00890"></a>00890 { -<a name="l00891"></a>00891 } -<a name="l00892"></a>00892 -<a name="l00893"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00893</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="l00894"></a>00894 { -<a name="l00895"></a>00895 <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> c; -<a name="l00896"></a>00896 readfile(c,filename.c_str()); -<a name="l00897"></a>00897 this-><a class="code" href="classFileReader.html#fc">fc</a> = c; -<a name="l00898"></a>00898 } -<a name="l00899"></a>00899 -<a name="l00900"></a>00900 -<a name="l00901"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00901</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>() -<a name="l00902"></a>00902 { +<a name="l00881"></a><a class="code" href="classConfigReader.html#Verify_28_29">00881</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>() +<a name="l00882"></a>00882 { +<a name="l00883"></a>00883 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#readerror">readerror</a>; +<a name="l00884"></a>00884 } +<a name="l00885"></a>00885 +<a name="l00886"></a>00886 +<a name="l00887"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00887</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="l00888"></a>00888 { +<a name="l00889"></a>00889 <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> c; +<a name="l00890"></a>00890 readfile(c,filename.c_str()); +<a name="l00891"></a>00891 this-><a class="code" href="classFileReader.html#fc">fc</a> = c; +<a name="l00892"></a>00892 } +<a name="l00893"></a>00893 +<a name="l00894"></a><a class="code" href="classFileReader.html#FileReader_28_29">00894</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>() +<a name="l00895"></a>00895 { +<a name="l00896"></a>00896 } +<a name="l00897"></a>00897 +<a name="l00898"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00898</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="l00899"></a>00899 { +<a name="l00900"></a>00900 <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> c; +<a name="l00901"></a>00901 readfile(c,filename.c_str()); +<a name="l00902"></a>00902 this-><a class="code" href="classFileReader.html#fc">fc</a> = c; <a name="l00903"></a>00903 } <a name="l00904"></a>00904 -<a name="l00905"></a><a class="code" href="classFileReader.html#Exists_28_29">00905</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>() -<a name="l00906"></a>00906 { -<a name="l00907"></a>00907 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0) -<a name="l00908"></a>00908 { -<a name="l00909"></a>00909 <span class="keywordflow">return</span>(<span class="keyword">false</span>); -<a name="l00910"></a>00910 } -<a name="l00911"></a>00911 <span class="keywordflow">else</span> -<a name="l00912"></a>00912 { -<a name="l00913"></a>00913 <span class="keywordflow">return</span>(<span class="keyword">true</span>); -<a name="l00914"></a>00914 } -<a name="l00915"></a>00915 } -<a name="l00916"></a>00916 -<a name="l00917"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00917</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="l00918"></a>00918 { -<a name="l00919"></a>00919 <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="l00920"></a>00920 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; -<a name="l00921"></a>00921 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x]; -<a name="l00922"></a>00922 } -<a name="l00923"></a>00923 -<a name="l00924"></a><a class="code" href="classFileReader.html#FileSize_28_29">00924</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>() -<a name="l00925"></a>00925 { -<a name="l00926"></a>00926 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size(); +<a name="l00905"></a>00905 +<a name="l00906"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00906</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>() +<a name="l00907"></a>00907 { +<a name="l00908"></a>00908 } +<a name="l00909"></a>00909 +<a name="l00910"></a><a class="code" href="classFileReader.html#Exists_28_29">00910</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>() +<a name="l00911"></a>00911 { +<a name="l00912"></a>00912 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0) +<a name="l00913"></a>00913 { +<a name="l00914"></a>00914 <span class="keywordflow">return</span>(<span class="keyword">false</span>); +<a name="l00915"></a>00915 } +<a name="l00916"></a>00916 <span class="keywordflow">else</span> +<a name="l00917"></a>00917 { +<a name="l00918"></a>00918 <span class="keywordflow">return</span>(<span class="keyword">true</span>); +<a name="l00919"></a>00919 } +<a name="l00920"></a>00920 } +<a name="l00921"></a>00921 +<a name="l00922"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00922</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="l00923"></a>00923 { +<a name="l00924"></a>00924 <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="l00925"></a>00925 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; +<a name="l00926"></a>00926 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x]; <a name="l00927"></a>00927 } <a name="l00928"></a>00928 -<a name="l00929"></a>00929 -<a name="l00930"></a>00930 std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>(255); -<a name="l00931"></a>00931 std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>(255); -<a name="l00932"></a>00932 -<a name="l00933"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00933</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a> = -1; +<a name="l00929"></a><a class="code" href="classFileReader.html#FileSize_28_29">00929</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>() +<a name="l00930"></a>00930 { +<a name="l00931"></a>00931 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size(); +<a name="l00932"></a>00932 } +<a name="l00933"></a>00933 <a name="l00934"></a>00934 -<a name="l00935"></a>00935 -</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Dec 14 14:49:17 2005 for InspIRCd by +<a name="l00935"></a>00935 std::vector<Module*> <a class="code" href="channels_8cpp.html#modules">modules</a>(255); +<a name="l00936"></a>00936 std::vector<ircd_module*> <a class="code" href="channels_8cpp.html#factory">factory</a>(255); +<a name="l00937"></a>00937 +<a name="l00938"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00938</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a> = -1; +<a name="l00939"></a>00939 +<a name="l00940"></a>00940 +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Dec 14 15:55:46 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> |