summaryrefslogtreecommitdiff
path: root/docs/module-doc/modules_8cpp-source.html
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-04-14 21:13:24 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-04-14 21:13:24 +0000
commit3f4b15c2cfe51a654b5167273f5a95b29e757cf1 (patch)
treeb0e065a1e7459b4e9dd5f8ee8ec4c9bc26feb514 /docs/module-doc/modules_8cpp-source.html
parentcff3a40e0bce1b8df5e4b4f1eba91c4a2603718a (diff)
New documentation on today's new methods etc
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1096 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'docs/module-doc/modules_8cpp-source.html')
-rw-r--r--docs/module-doc/modules_8cpp-source.html889
1 files changed, 461 insertions, 428 deletions
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html
index e96be8f92..77272f2aa 100644
--- a/docs/module-doc/modules_8cpp-source.html
+++ b/docs/module-doc/modules_8cpp-source.html
@@ -323,424 +323,424 @@
<a name="l00316"></a><a class="code" href="classModule.html#a12">00316</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; }
<a name="l00317"></a><a class="code" href="classModule.html#a11">00317</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a11">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &amp;params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
<a name="l00318"></a><a class="code" href="classModule.html#a2">00318</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); }
-<a name="l00319"></a><a class="code" href="classModule.html#a13">00319</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00320"></a><a class="code" href="classModule.html#a14">00320</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00321"></a><a class="code" href="classModule.html#a15">00321</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
-<a name="l00322"></a><a class="code" href="classModule.html#a16">00322</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
-<a name="l00323"></a><a class="code" href="classModule.html#a17">00323</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
-<a name="l00324"></a><a class="code" href="classModule.html#a18">00324</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a18">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
-<a name="l00325"></a><a class="code" href="classModule.html#a19">00325</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; };
-<a name="l00326"></a><a class="code" href="classModule.html#a20">00326</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a20">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { };
-<a name="l00327"></a><a class="code" href="classModule.html#a21">00327</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; };
-<a name="l00328"></a><a class="code" href="classModule.html#a22">00328</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a22">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
-<a name="l00329"></a><a class="code" href="classModule.html#a23">00329</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a23">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
-<a name="l00330"></a><a class="code" href="classModule.html#a24">00330</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a24">Module::On005Numeric</a>(std::string &amp;output) { };
-<a name="l00331"></a><a class="code" href="classModule.html#a25">00331</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a25">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00332"></a><a class="code" href="classModule.html#a26">00332</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a26">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { };
-<a name="l00333"></a><a class="code" href="classModule.html#a27">00333</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a27">Module::OnBackgroundTimer</a>(time_t curtime) { };
-<a name="l00334"></a><a class="code" href="classModule.html#a28">00334</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a28">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
-00335
-00336 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
-00337 <span class="comment">// exports in the core</span>
-00338 <span class="comment">//</span>
-00339
-<a name="l00340"></a><a class="code" href="classServer.html#a0">00340</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
-00341 {
-00342 }
-00343
-<a name="l00344"></a><a class="code" href="classServer.html#a1">00344</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
-00345 {
-00346 }
-00347
-<a name="l00348"></a><a class="code" href="classServer.html#a2">00348</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
-00349 {
-00350 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00319"></a><a class="code" href="classModule.html#a15">00319</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00320"></a><a class="code" href="classModule.html#a16">00320</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a16">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00321"></a><a class="code" href="classModule.html#a17">00321</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a17">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
+<a name="l00322"></a><a class="code" href="classModule.html#a18">00322</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a18">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
+<a name="l00323"></a><a class="code" href="classModule.html#a19">00323</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
+<a name="l00324"></a><a class="code" href="classModule.html#a20">00324</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
+<a name="l00325"></a><a class="code" href="classModule.html#a21">00325</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; };
+<a name="l00326"></a><a class="code" href="classModule.html#a22">00326</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a22">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { };
+<a name="l00327"></a><a class="code" href="classModule.html#a23">00327</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a23">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; };
+<a name="l00328"></a><a class="code" href="classModule.html#a24">00328</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a24">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
+<a name="l00329"></a><a class="code" href="classModule.html#a25">00329</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a25">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
+<a name="l00330"></a><a class="code" href="classModule.html#a26">00330</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a26">Module::On005Numeric</a>(std::string &amp;output) { };
+<a name="l00331"></a><a class="code" href="classModule.html#a27">00331</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a27">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00332"></a><a class="code" href="classModule.html#a28">00332</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a28">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { };
+<a name="l00333"></a><a class="code" href="classModule.html#a29">00333</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a29">Module::OnBackgroundTimer</a>(time_t curtime) { };
+<a name="l00334"></a><a class="code" href="classModule.html#a30">00334</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a30">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
+<a name="l00335"></a><a class="code" href="classModule.html#a31">00335</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a31">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
+<a name="l00336"></a><a class="code" href="classModule.html#a32">00336</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a32">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
+<a name="l00337"></a><a class="code" href="classModule.html#a33">00337</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a33">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00338"></a><a class="code" href="classModule.html#a13">00338</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a13">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00339"></a><a class="code" href="classModule.html#a14">00339</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { };
+00340
+00341 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
+00342 <span class="comment">// exports in the core</span>
+00343 <span class="comment">//</span>
+00344
+<a name="l00345"></a><a class="code" href="classServer.html#a0">00345</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
+00346 {
+00347 }
+00348
+<a name="l00349"></a><a class="code" href="classServer.html#a1">00349</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
+00350 {
00351 }
00352
-<a name="l00353"></a><a class="code" href="classServer.html#a30">00353</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a30">Server::MatchText</a>(std::string sliteral, std::string spattern)
+<a name="l00353"></a><a class="code" href="classServer.html#a2">00353</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
00354 {
-00355 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-00356 strlcpy(literal,sliteral.c_str(),MAXBUF);
-00357 strlcpy(pattern,spattern.c_str(),MAXBUF);
-00358 <span class="keywordflow">return</span> match(literal,pattern);
-00359 }
-00360
-<a name="l00361"></a><a class="code" href="classServer.html#a25">00361</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
-00362 {
-00363 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00355 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+00356 }
+00357
+<a name="l00358"></a><a class="code" href="classServer.html#a30">00358</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a30">Server::MatchText</a>(std::string sliteral, std::string spattern)
+00359 {
+00360 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+00361 strlcpy(literal,sliteral.c_str(),MAXBUF);
+00362 strlcpy(pattern,spattern.c_str(),MAXBUF);
+00363 <span class="keywordflow">return</span> match(literal,pattern);
00364 }
00365
-<a name="l00366"></a><a class="code" href="classServer.html#a26">00366</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a26">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
+<a name="l00366"></a><a class="code" href="classServer.html#a25">00366</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
00367 {
-00368 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">true</span>);
+00368 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
00369 }
00370
-<a name="l00371"></a><a class="code" href="classServer.html#a27">00371</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a27">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
+<a name="l00371"></a><a class="code" href="classServer.html#a26">00371</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a26">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
00372 {
-00373 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+00373 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">true</span>);
00374 }
00375
-<a name="l00376"></a><a class="code" href="classServer.html#a35">00376</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a35">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
+<a name="l00376"></a><a class="code" href="classServer.html#a27">00376</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a27">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
00377 {
-00378 <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl;
-00379 userl.clear();
-00380 <span class="keywordflow">for</span> (user_hash::const_iterator i = <a class="code" href="modules_8cpp.html#a42">clientlist</a>.begin(); i != <a class="code" href="modules_8cpp.html#a42">clientlist</a>.end(); i++)
-00381 {
-00382 <span class="keywordflow">if</span> (i-&gt;second)
-00383 {
-00384 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a16">has_channel</a>(i-&gt;second,chan))
-00385 {
-00386 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a13">isnick</a>(i-&gt;second-&gt;nick))
-00387 {
-00388 userl.push_back(i-&gt;second);
-00389 }
-00390 }
-00391 }
-00392 }
-00393 <span class="keywordflow">return</span> userl;
-00394 }
-<a name="l00395"></a><a class="code" href="classServer.html#a28">00395</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a28">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
-00396 {
-00397 force_nickchange(user,nickname.c_str());
-00398 }
-00399
-<a name="l00400"></a><a class="code" href="classServer.html#a29">00400</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+00378 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+00379 }
+00380
+<a name="l00381"></a><a class="code" href="classServer.html#a35">00381</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a35">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
+00382 {
+00383 <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl;
+00384 userl.clear();
+00385 <span class="keywordflow">for</span> (user_hash::const_iterator i = <a class="code" href="modules_8cpp.html#a42">clientlist</a>.begin(); i != <a class="code" href="modules_8cpp.html#a42">clientlist</a>.end(); i++)
+00386 {
+00387 <span class="keywordflow">if</span> (i-&gt;second)
+00388 {
+00389 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a16">has_channel</a>(i-&gt;second,chan))
+00390 {
+00391 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a13">isnick</a>(i-&gt;second-&gt;nick))
+00392 {
+00393 userl.push_back(i-&gt;second);
+00394 }
+00395 }
+00396 }
+00397 }
+00398 <span class="keywordflow">return</span> userl;
+00399 }
+<a name="l00400"></a><a class="code" href="classServer.html#a28">00400</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a28">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
00401 {
-00402 <a class="code" href="message_8h.html#a19">send_network_quit</a>(user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,reason.c_str());
-00403 kill_link(user,reason.c_str());
-00404 }
-00405
-<a name="l00406"></a><a class="code" href="classServer.html#a34">00406</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a34">Server::IsUlined</a>(std::string server)
-00407 {
-00408 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str());
+00402 force_nickchange(user,nickname.c_str());
+00403 }
+00404
+<a name="l00405"></a><a class="code" href="classServer.html#a29">00405</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+00406 {
+00407 <a class="code" href="message_8h.html#a19">send_network_quit</a>(user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,reason.c_str());
+00408 kill_link(user,reason.c_str());
00409 }
00410
-<a name="l00411"></a><a class="code" href="classServer.html#a31">00411</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00411"></a><a class="code" href="classServer.html#a34">00411</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a34">Server::IsUlined</a>(std::string server)
00412 {
-00413 call_handler(commandname.c_str(),parameters,pcnt,user);
+00413 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str());
00414 }
00415
-<a name="l00416"></a><a class="code" href="classServer.html#a3">00416</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Server::Log</a>(<span class="keywordtype">int</span> level, std::string s)
+<a name="l00416"></a><a class="code" href="classServer.html#a31">00416</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
00417 {
-00418 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00418 call_handler(commandname.c_str(),parameters,pcnt,user);
00419 }
00420
-<a name="l00421"></a><a class="code" href="classServer.html#a23">00421</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a23">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="l00421"></a><a class="code" href="classServer.html#a3">00421</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Server::Log</a>(<span class="keywordtype">int</span> level, std::string s)
00422 {
-00423 <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source);
+00423 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
00424 }
00425
-<a name="l00426"></a><a class="code" href="classServer.html#a24">00426</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a24">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="l00426"></a><a class="code" href="classServer.html#a23">00426</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a23">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)
00427 {
-00428 <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user);
+00428 <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source);
00429 }
00430
-<a name="l00431"></a><a class="code" href="classServer.html#a4">00431</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Server::Send</a>(<span class="keywordtype">int</span> Socket, std::string s)
+<a name="l00431"></a><a class="code" href="classServer.html#a24">00431</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a24">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
00432 {
-00433 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00433 <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user);
00434 }
00435
-<a name="l00436"></a><a class="code" href="classServer.html#a5">00436</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s)
+<a name="l00436"></a><a class="code" href="classServer.html#a4">00436</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Server::Send</a>(<span class="keywordtype">int</span> Socket, std::string s)
00437 {
-00438 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00438 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
00439 }
00440
-<a name="l00441"></a><a class="code" href="classServer.html#a6">00441</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
+<a name="l00441"></a><a class="code" href="classServer.html#a5">00441</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s)
00442 {
-00443 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00443 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
00444 }
00445
-<a name="l00446"></a><a class="code" href="classServer.html#a7">00446</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
+<a name="l00446"></a><a class="code" href="classServer.html#a6">00446</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
00447 {
-00448 <span class="keywordflow">if</span> (!Source)
-00449 {
-00450 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-00451 Write(Dest-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
-00452 }
-00453 <span class="keywordflow">else</span>
+00448 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00449 }
+00450
+<a name="l00451"></a><a class="code" href="classServer.html#a7">00451</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
+00452 {
+00453 <span class="keywordflow">if</span> (!Source)
00454 {
-00455 <span class="comment">// otherwise it comes from the user specified</span>
-00456 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00455 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+00456 Write(Dest-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
00457 }
-00458 }
-00459
-<a name="l00460"></a><a class="code" href="classServer.html#a8">00460</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string s,<span class="keywordtype">bool</span> IncludeSender)
-00461 {
-00462 <span class="keywordflow">if</span> (IncludeSender)
-00463 {
-00464 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00465 }
-00466 <span class="keywordflow">else</span>
-00467 {
-00468 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00469 }
-00470 }
-00471
-<a name="l00472"></a><a class="code" href="classServer.html#a9">00472</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
-00473 {
-00474 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0);
+00458 <span class="keywordflow">else</span>
+00459 {
+00460 <span class="comment">// otherwise it comes from the user specified</span>
+00461 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00462 }
+00463 }
+00464
+<a name="l00465"></a><a class="code" href="classServer.html#a8">00465</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string s,<span class="keywordtype">bool</span> IncludeSender)
+00466 {
+00467 <span class="keywordflow">if</span> (IncludeSender)
+00468 {
+00469 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00470 }
+00471 <span class="keywordflow">else</span>
+00472 {
+00473 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00474 }
00475 }
00476
-<a name="l00477"></a><a class="code" href="classServer.html#a10">00477</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
+<a name="l00477"></a><a class="code" href="classServer.html#a9">00477</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
00478 {
-00479 <span class="keywordflow">if</span> (IncludeSender)
-00480 {
-00481 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00482 }
-00483 <span class="keywordflow">else</span>
-00484 {
-00485 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00486 }
-00487 }
-00488
-<a name="l00489"></a><a class="code" href="classServer.html#a11">00489</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
-00490 {
-00491 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+00479 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0);
+00480 }
+00481
+<a name="l00482"></a><a class="code" href="classServer.html#a10">00482</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
+00483 {
+00484 <span class="keywordflow">if</span> (IncludeSender)
+00485 {
+00486 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00487 }
+00488 <span class="keywordflow">else</span>
+00489 {
+00490 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00491 }
00492 }
00493
-<a name="l00494"></a><a class="code" href="classServer.html#a32">00494</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a32">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host)
+<a name="l00494"></a><a class="code" href="classServer.html#a11">00494</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
00495 {
-00496 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str());
+00496 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
00497 }
00498
-<a name="l00499"></a><a class="code" href="classServer.html#a33">00499</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos)
+<a name="l00499"></a><a class="code" href="classServer.html#a32">00499</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a32">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host)
00500 {
-00501 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str());
+00501 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str());
00502 }
00503
-<a name="l00504"></a><a class="code" href="classServer.html#a12">00504</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick)
+<a name="l00504"></a><a class="code" href="classServer.html#a33">00504</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos)
00505 {
-00506 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0);
+00506 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str());
00507 }
00508
-<a name="l00509"></a><a class="code" href="classServer.html#a14">00509</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a14">Server::FindNick</a>(std::string nick)
+<a name="l00509"></a><a class="code" href="classServer.html#a12">00509</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick)
00510 {
-00511 <span class="keywordflow">return</span> Find(nick);
+00511 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0);
00512 }
00513
-<a name="l00514"></a><a class="code" href="classServer.html#a15">00514</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a15">Server::FindChannel</a>(std::string channel)
+<a name="l00514"></a><a class="code" href="classServer.html#a14">00514</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a14">Server::FindNick</a>(std::string nick)
00515 {
-00516 <span class="keywordflow">return</span> FindChan(channel.c_str());
+00516 <span class="keywordflow">return</span> Find(nick);
00517 }
00518
-<a name="l00519"></a><a class="code" href="classServer.html#a16">00519</a> std::string <a class="code" href="classServer.html#a16">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+<a name="l00519"></a><a class="code" href="classServer.html#a15">00519</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a15">Server::FindChannel</a>(std::string channel)
00520 {
-00521 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan);
+00521 <span class="keywordflow">return</span> FindChan(channel.c_str());
00522 }
00523
-<a name="l00524"></a><a class="code" href="classServer.html#a17">00524</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a17">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+<a name="l00524"></a><a class="code" href="classServer.html#a16">00524</a> std::string <a class="code" href="classServer.html#a16">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
00525 {
-00526 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan);
+00526 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan);
00527 }
00528
-<a name="l00529"></a><a class="code" href="classServer.html#a18">00529</a> std::string <a class="code" href="classServer.html#a18">Server::GetServerName</a>()
+<a name="l00529"></a><a class="code" href="classServer.html#a17">00529</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a17">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
00530 {
-00531 <span class="keywordflow">return</span> getservername();
+00531 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan);
00532 }
00533
-<a name="l00534"></a><a class="code" href="classServer.html#a19">00534</a> std::string <a class="code" href="classServer.html#a19">Server::GetNetworkName</a>()
+<a name="l00534"></a><a class="code" href="classServer.html#a18">00534</a> std::string <a class="code" href="classServer.html#a18">Server::GetServerName</a>()
00535 {
-00536 <span class="keywordflow">return</span> getnetworkname();
+00536 <span class="keywordflow">return</span> getservername();
00537 }
00538
-<a name="l00539"></a><a class="code" href="classServer.html#a20">00539</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a20">Server::GetAdmin</a>()
+<a name="l00539"></a><a class="code" href="classServer.html#a19">00539</a> std::string <a class="code" href="classServer.html#a19">Server::GetNetworkName</a>()
00540 {
-00541 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00541 <span class="keywordflow">return</span> getnetworkname();
00542 }
00543
-00544
-00545
-<a name="l00546"></a><a class="code" href="classServer.html#a21">00546</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a21">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)
-00547 {
-00548 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00549 {
-00550 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00551 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00552 }
-00553 <span class="keywordflow">if</span> (((params_when_on&gt;0) || (params_when_off&gt;0)) &amp;&amp; (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
+<a name="l00544"></a><a class="code" href="classServer.html#a20">00544</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a20">Server::GetAdmin</a>()
+00545 {
+00546 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00547 }
+00548
+00549
+00550
+<a name="l00551"></a><a class="code" href="classServer.html#a21">00551</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a21">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)
+00552 {
+00553 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
00554 {
-00555 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00555 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
00556 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00557 }
-00558 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+00558 <span class="keywordflow">if</span> (((params_when_on&gt;0) || (params_when_off&gt;0)) &amp;&amp; (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
00559 {
-00560 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00560 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
00561 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00562 }
-00563 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a57">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00564 }
-00565
-<a name="l00566"></a><a class="code" href="classServer.html#a22">00566</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a22">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
-00567 {
-00568 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a57">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
-00569 <span class="keywordflow">if</span> (res)
-00570 <a class="code" href="modules_8cpp.html#a58">ModeMakeList</a>(modechar);
-00571 <span class="keywordflow">return</span> res;
-00572 }
-00573
-<a name="l00574"></a><a class="code" href="classServer.html#a13">00574</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a13">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
-00575 {
-00576 <span class="keywordflow">return</span> usercount(c);
+00563 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+00564 {
+00565 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00566 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00567 }
+00568 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a57">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00569 }
+00570
+<a name="l00571"></a><a class="code" href="classServer.html#a22">00571</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a22">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
+00572 {
+00573 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a57">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
+00574 <span class="keywordflow">if</span> (res)
+00575 <a class="code" href="modules_8cpp.html#a58">ModeMakeList</a>(modechar);
+00576 <span class="keywordflow">return</span> res;
00577 }
00578
-00579
-<a name="l00580"></a><a class="code" href="classServer.html#a36">00580</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message)
-00581 {
-00582 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
-00583 user-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
-00584 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,user-&gt;<a class="code" href="classconnection.html#o1">host</a>,message.c_str());
-00585 close(old_fd);
-00586 shutdown (old_fd,2);
-00587 }
-00588
-<a name="l00589"></a><a class="code" href="classServer.html#a37">00589</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a37">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message)
-00590 {
-00591 zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a> = alive-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
-00592 alive-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
-00593 Write(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,alive-&gt;<a class="code" href="classconnection.html#o1">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00594 kill_link(alive,message.c_str());
-00595 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
-00596 {
-00597 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a> != NULL)
-00598 {
-00599 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>-&gt;<a class="code" href="classchanrec.html#o0">name</a>)
-00600 {
-00601 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>;
-00602 WriteFrom(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
-00603 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#o4">topicset</a>)
-00604 {
-00605 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o2">topic</a>);
-00606 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o5">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o4">topicset</a>);
-00607 }
-00608 userlist(zombie,Ptr);
-00609 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
-00610 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"324 %s %s +%s"</span>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>,chanmodes(Ptr));
-00611 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"329 %s %s %d"</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o3">created</a>);
-00612
-00613 }
-00614 }
-00615 }
-00616
-00617 }
-00618
-<a name="l00619"></a><a class="code" href="classServer.html#a38">00619</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a38">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00620 {
-00621 <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00579"></a><a class="code" href="classServer.html#a13">00579</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a13">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
+00580 {
+00581 <span class="keywordflow">return</span> usercount(c);
+00582 }
+00583
+00584
+<a name="l00585"></a><a class="code" href="classServer.html#a36">00585</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message)
+00586 {
+00587 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
+00588 user-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
+00589 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,user-&gt;<a class="code" href="classconnection.html#o1">host</a>,message.c_str());
+00590 close(old_fd);
+00591 shutdown (old_fd,2);
+00592 }
+00593
+<a name="l00594"></a><a class="code" href="classServer.html#a37">00594</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a37">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message)
+00595 {
+00596 zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a> = alive-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
+00597 alive-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
+00598 Write(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,alive-&gt;<a class="code" href="classconnection.html#o1">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00599 kill_link(alive,message.c_str());
+00600 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
+00601 {
+00602 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a> != NULL)
+00603 {
+00604 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>-&gt;<a class="code" href="classchanrec.html#o0">name</a>)
+00605 {
+00606 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>;
+00607 WriteFrom(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
+00608 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#o4">topicset</a>)
+00609 {
+00610 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o2">topic</a>);
+00611 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o5">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o4">topicset</a>);
+00612 }
+00613 userlist(zombie,Ptr);
+00614 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
+00615 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"324 %s %s +%s"</span>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>,chanmodes(Ptr));
+00616 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"329 %s %s %d"</span>, zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o3">created</a>);
+00617
+00618 }
+00619 }
+00620 }
+00621
00622 }
00623
-<a name="l00624"></a><a class="code" href="classServer.html#a39">00624</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a39">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname)
+<a name="l00624"></a><a class="code" href="classServer.html#a38">00624</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a38">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
00625 {
-00626 <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
+00626 <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
00627 }
00628
-<a name="l00629"></a><a class="code" href="classServer.html#a40">00629</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr)
+<a name="l00629"></a><a class="code" href="classServer.html#a39">00629</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a39">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname)
00630 {
-00631 <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
+00631 <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
00632 }
00633
-<a name="l00634"></a><a class="code" href="classServer.html#a41">00634</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+<a name="l00634"></a><a class="code" href="classServer.html#a40">00634</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr)
00635 {
-00636 <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00636 <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
00637 }
00638
-<a name="l00639"></a><a class="code" href="classServer.html#a42">00639</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+<a name="l00639"></a><a class="code" href="classServer.html#a41">00639</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
00640 {
-00641 <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00641 <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
00642 }
00643
-<a name="l00644"></a><a class="code" href="classServer.html#a43">00644</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a43">Server::DelGLine</a>(std::string hostmask)
+<a name="l00644"></a><a class="code" href="classServer.html#a42">00644</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
00645 {
-00646 <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str());
+00646 <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
00647 }
00648
-<a name="l00649"></a><a class="code" href="classServer.html#a44">00649</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a44">Server::DelQLine</a>(std::string nickname)
+<a name="l00649"></a><a class="code" href="classServer.html#a43">00649</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a43">Server::DelGLine</a>(std::string hostmask)
00650 {
-00651 <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str());
+00651 <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str());
00652 }
00653
-<a name="l00654"></a><a class="code" href="classServer.html#a45">00654</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelZLine</a>(std::string ipaddr)
+<a name="l00654"></a><a class="code" href="classServer.html#a44">00654</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a44">Server::DelQLine</a>(std::string nickname)
00655 {
-00656 <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str());
+00656 <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str());
00657 }
00658
-<a name="l00659"></a><a class="code" href="classServer.html#a46">00659</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelKLine</a>(std::string hostmask)
+<a name="l00659"></a><a class="code" href="classServer.html#a45">00659</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelZLine</a>(std::string ipaddr)
00660 {
-00661 <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str());
+00661 <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str());
00662 }
00663
-<a name="l00664"></a><a class="code" href="classServer.html#a47">00664</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelELine</a>(std::string hostmask)
+<a name="l00664"></a><a class="code" href="classServer.html#a46">00664</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelKLine</a>(std::string hostmask)
00665 {
-00666 <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str());
+00666 <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str());
00667 }
00668
-<a name="l00669"></a><a class="code" href="classServer.html#a48">00669</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a48">Server::CalcDuration</a>(std::string delta)
+<a name="l00669"></a><a class="code" href="classServer.html#a47">00669</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelELine</a>(std::string hostmask)
00670 {
-00671 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str());
+00671 <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str());
00672 }
00673
-00674
-<a name="l00675"></a><a class="code" href="classConfigReader.html#a0">00675</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
-00676 {
-00677 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00678 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00679 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
-00680 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
-00681 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
-00682 }
-00683
-00684
-<a name="l00685"></a><a class="code" href="classConfigReader.html#a2">00685</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
-00686 {
-00687 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>)
-00688 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>;
-00689 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>)
-00690 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>;
-00691 }
-00692
-00693
-<a name="l00694"></a><a class="code" href="classConfigReader.html#a1">00694</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
-00695 {
-00696 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00697 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00698 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>);
-00699 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
-00700 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
-00701 };
-00702
-<a name="l00703"></a><a class="code" href="classConfigReader.html#a3">00703</a> std::string <a class="code" href="classConfigReader.html#a3">ConfigReader::ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
-00704 {
-00705 <span class="keywordtype">char</span> val[MAXBUF];
-00706 <span class="keywordtype">char</span> t[MAXBUF];
-00707 <span class="keywordtype">char</span> n[MAXBUF];
-00708 strlcpy(t,tag.c_str(),MAXBUF);
-00709 strlcpy(n,name.c_str(),MAXBUF);
-00710 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00711 <span class="keywordflow">if</span> (!res)
-00712 {
-00713 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00714 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00715 }
-00716 <span class="keywordflow">return</span> std::string(val);
-00717 }
-00718
-<a name="l00719"></a><a class="code" href="classConfigReader.html#a4">00719</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
-00720 {
-00721 <span class="keywordtype">char</span> val[MAXBUF];
-00722 <span class="keywordtype">char</span> t[MAXBUF];
-00723 <span class="keywordtype">char</span> n[MAXBUF];
-00724 strlcpy(t,tag.c_str(),MAXBUF);
-00725 strlcpy(n,name.c_str(),MAXBUF);
-00726 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00727 <span class="keywordflow">if</span> (!res)
-00728 {
-00729 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00730 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00731 }
-00732 std::string s = val;
-00733 <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>));
-00734 }
+<a name="l00674"></a><a class="code" href="classServer.html#a48">00674</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a48">Server::CalcDuration</a>(std::string delta)
+00675 {
+00676 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str());
+00677 }
+00678
+<a name="l00679"></a><a class="code" href="classServer.html#a49">00679</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::IsValidMask</a>(std::string mask)
+00680 {
+00681 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+00682 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+00683 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00684 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+00685 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00686 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00687 <span class="keywordflow">if</span> (dest[i] &lt; 32)
+00688 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00689 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00690 <span class="keywordflow">if</span> (dest[i] &gt; 126)
+00691 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00692 <span class="keywordtype">int</span> c = 0;
+00693 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00694 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+00695 c++;
+00696 <span class="keywordflow">if</span> (c&gt;1)
+00697 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00698 c = 0;
+00699 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00700 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+00701 c++;
+00702 <span class="keywordflow">if</span> (c&gt;1)
+00703 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00704
+00705 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00706 }
+00707
+<a name="l00708"></a><a class="code" href="classConfigReader.html#a0">00708</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
+00709 {
+00710 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00711 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00712 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
+00713 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
+00714 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
+00715 }
+00716
+00717
+<a name="l00718"></a><a class="code" href="classConfigReader.html#a2">00718</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
+00719 {
+00720 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>)
+00721 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>;
+00722 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>)
+00723 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>;
+00724 }
+00725
+00726
+<a name="l00727"></a><a class="code" href="classConfigReader.html#a1">00727</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
+00728 {
+00729 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00730 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00731 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>);
+00732 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
+00733 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
+00734 };
00735
-<a name="l00736"></a><a class="code" href="classConfigReader.html#a5">00736</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
+<a name="l00736"></a><a class="code" href="classConfigReader.html#a3">00736</a> std::string <a class="code" href="classConfigReader.html#a3">ConfigReader::ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
00737 {
00738 <span class="keywordtype">char</span> val[MAXBUF];
00739 <span class="keywordtype">char</span> t[MAXBUF];
@@ -751,135 +751,168 @@
00744 <span class="keywordflow">if</span> (!res)
00745 {
00746 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00747 <span class="keywordflow">return</span> 0;
+00747 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
00748 }
-00749 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
-00750 {
-00751 <span class="keywordflow">if</span> (!isdigit(val[i]))
-00752 {
-00753 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>;
-00754 <span class="keywordflow">return</span> 0;
-00755 }
-00756 }
-00757 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
-00758 {
-00759 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>;
-00760 <span class="keywordflow">return</span> 0;
-00761 }
-00762 <span class="keywordflow">return</span> atoi(val);
-00763 }
-00764
-<a name="l00765"></a><a class="code" href="classConfigReader.html#a6">00765</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>()
-00766 {
-00767 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#p3">error</a>;
-00768 this-&gt;error = 0;
-00769 <span class="keywordflow">return</span> olderr;
-00770 }
-00771
-<a name="l00772"></a><a class="code" href="classConfigReader.html#a9">00772</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
-00773 {
-00774 <span class="keywordflow">if</span> (bail)
-00775 {
-00776 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;str().c_str());
-00777 exit(0);
-00778 }
-00779 <span class="keywordflow">else</span>
-00780 {
-00781 <span class="keywordtype">char</span> dataline[1024];
-00782 <span class="keywordflow">if</span> (user)
-00783 {
-00784 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00785 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
-00786 {
-00787 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
-00788 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,dataline);
-00789 }
-00790 }
-00791 <span class="keywordflow">else</span>
-00792 {
-00793 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00794 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
-00795 {
-00796 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
-00797 WriteOpers(dataline);
-00798 }
-00799 }
-00800 <span class="keywordflow">return</span>;
-00801 }
-00802 }
-00803
+00749 <span class="keywordflow">return</span> std::string(val);
+00750 }
+00751
+<a name="l00752"></a><a class="code" href="classConfigReader.html#a4">00752</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
+00753 {
+00754 <span class="keywordtype">char</span> val[MAXBUF];
+00755 <span class="keywordtype">char</span> t[MAXBUF];
+00756 <span class="keywordtype">char</span> n[MAXBUF];
+00757 strlcpy(t,tag.c_str(),MAXBUF);
+00758 strlcpy(n,name.c_str(),MAXBUF);
+00759 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00760 <span class="keywordflow">if</span> (!res)
+00761 {
+00762 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00763 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00764 }
+00765 std::string s = val;
+00766 <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>));
+00767 }
+00768
+<a name="l00769"></a><a class="code" href="classConfigReader.html#a5">00769</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
+00770 {
+00771 <span class="keywordtype">char</span> val[MAXBUF];
+00772 <span class="keywordtype">char</span> t[MAXBUF];
+00773 <span class="keywordtype">char</span> n[MAXBUF];
+00774 strlcpy(t,tag.c_str(),MAXBUF);
+00775 strlcpy(n,name.c_str(),MAXBUF);
+00776 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00777 <span class="keywordflow">if</span> (!res)
+00778 {
+00779 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00780 <span class="keywordflow">return</span> 0;
+00781 }
+00782 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
+00783 {
+00784 <span class="keywordflow">if</span> (!isdigit(val[i]))
+00785 {
+00786 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>;
+00787 <span class="keywordflow">return</span> 0;
+00788 }
+00789 }
+00790 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
+00791 {
+00792 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>;
+00793 <span class="keywordflow">return</span> 0;
+00794 }
+00795 <span class="keywordflow">return</span> atoi(val);
+00796 }
+00797
+<a name="l00798"></a><a class="code" href="classConfigReader.html#a6">00798</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>()
+00799 {
+00800 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#p3">error</a>;
+00801 this-&gt;error = 0;
+00802 <span class="keywordflow">return</span> olderr;
+00803 }
00804
-<a name="l00805"></a><a class="code" href="classConfigReader.html#a7">00805</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag)
+<a name="l00805"></a><a class="code" href="classConfigReader.html#a9">00805</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
00806 {
-00807 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str());
-00808 }
-00809
-<a name="l00810"></a><a class="code" href="classConfigReader.html#a10">00810</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index)
-00811 {
-00812 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index);
-00813 }
-00814
-<a name="l00815"></a><a class="code" href="classConfigReader.html#a8">00815</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>()
-00816 {
-00817 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>;
-00818 }
-00819
-00820
-<a name="l00821"></a><a class="code" href="classFileReader.html#a1">00821</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
-00822 {
-00823 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
-00824 readfile(c,filename.c_str());
-00825 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
-00826 }
-00827
-<a name="l00828"></a><a class="code" href="classFileReader.html#a0">00828</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
-00829 {
-00830 }
-00831
-<a name="l00832"></a><a class="code" href="classFileReader.html#a3">00832</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
-00833 {
-00834 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
-00835 readfile(c,filename.c_str());
-00836 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
-00837 }
-00838
-00839
-<a name="l00840"></a><a class="code" href="classFileReader.html#a2">00840</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
-00841 {
-00842 }
-00843
-<a name="l00844"></a><a class="code" href="classFileReader.html#a4">00844</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
-00845 {
-00846 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0)
-00847 {
-00848 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-00849 }
-00850 <span class="keywordflow">else</span>
-00851 {
-00852 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-00853 }
-00854 }
-00855
-<a name="l00856"></a><a class="code" href="classFileReader.html#a5">00856</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
-00857 {
-00858 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#r0">fc</a>.size()))
-00859 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00860 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x];
-00861 }
-00862
-<a name="l00863"></a><a class="code" href="classFileReader.html#a6">00863</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
-00864 {
-00865 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size();
-00866 }
-00867
-00868
-00869 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a59">modules</a>(255);
-00870 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a60">factory</a>(255);
+00807 <span class="keywordflow">if</span> (bail)
+00808 {
+00809 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;str().c_str());
+00810 exit(0);
+00811 }
+00812 <span class="keywordflow">else</span>
+00813 {
+00814 <span class="keywordtype">char</span> dataline[1024];
+00815 <span class="keywordflow">if</span> (user)
+00816 {
+00817 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00818 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
+00819 {
+00820 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
+00821 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,dataline);
+00822 }
+00823 }
+00824 <span class="keywordflow">else</span>
+00825 {
+00826 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00827 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
+00828 {
+00829 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
+00830 WriteOpers(dataline);
+00831 }
+00832 }
+00833 <span class="keywordflow">return</span>;
+00834 }
+00835 }
+00836
+00837
+<a name="l00838"></a><a class="code" href="classConfigReader.html#a7">00838</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag)
+00839 {
+00840 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str());
+00841 }
+00842
+<a name="l00843"></a><a class="code" href="classConfigReader.html#a10">00843</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index)
+00844 {
+00845 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index);
+00846 }
+00847
+<a name="l00848"></a><a class="code" href="classConfigReader.html#a8">00848</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>()
+00849 {
+00850 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>;
+00851 }
+00852
+00853
+<a name="l00854"></a><a class="code" href="classFileReader.html#a1">00854</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
+00855 {
+00856 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
+00857 readfile(c,filename.c_str());
+00858 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
+00859 }
+00860
+<a name="l00861"></a><a class="code" href="classFileReader.html#a0">00861</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
+00862 {
+00863 }
+00864
+<a name="l00865"></a><a class="code" href="classFileReader.html#a3">00865</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
+00866 {
+00867 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
+00868 readfile(c,filename.c_str());
+00869 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
+00870 }
00871
-<a name="l00872"></a><a class="code" href="modules_8cpp.html#a1">00872</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1;
-00873
-00874
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Apr 13 13:06:54 2005 for InspIRCd by
+00872
+<a name="l00873"></a><a class="code" href="classFileReader.html#a2">00873</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
+00874 {
+00875 }
+00876
+<a name="l00877"></a><a class="code" href="classFileReader.html#a4">00877</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
+00878 {
+00879 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0)
+00880 {
+00881 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
+00882 }
+00883 <span class="keywordflow">else</span>
+00884 {
+00885 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+00886 }
+00887 }
+00888
+<a name="l00889"></a><a class="code" href="classFileReader.html#a5">00889</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
+00890 {
+00891 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#r0">fc</a>.size()))
+00892 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00893 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x];
+00894 }
+00895
+<a name="l00896"></a><a class="code" href="classFileReader.html#a6">00896</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
+00897 {
+00898 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size();
+00899 }
+00900
+00901
+00902 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a59">modules</a>(255);
+00903 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a60">factory</a>(255);
+00904
+<a name="l00905"></a><a class="code" href="modules_8cpp.html#a1">00905</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1;
+00906
+00907
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Apr 14 21:12:05 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
</a>1.3.3 </small></address>