summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/module-doc/annotated.html2
-rw-r--r--docs/module-doc/base_8h-source.html2
-rw-r--r--docs/module-doc/base_8h.html2
-rw-r--r--docs/module-doc/channels_8cpp-source.html4
-rw-r--r--docs/module-doc/channels_8cpp.html6
-rw-r--r--docs/module-doc/channels_8h-source.html2
-rw-r--r--docs/module-doc/channels_8h.html2
-rw-r--r--docs/module-doc/classAdmin-members.html2
-rw-r--r--docs/module-doc/classAdmin.html2
-rw-r--r--docs/module-doc/classBanItem-members.html2
-rw-r--r--docs/module-doc/classBanItem.html2
-rw-r--r--docs/module-doc/classConfigReader-members.html2
-rw-r--r--docs/module-doc/classConfigReader.html60
-rw-r--r--docs/module-doc/classConnectClass-members.html8
-rw-r--r--docs/module-doc/classConnectClass.html81
-rw-r--r--docs/module-doc/classConnectClass__coll__graph.gifbin6207 -> 7484 bytes
-rw-r--r--docs/module-doc/classExemptItem-members.html2
-rw-r--r--docs/module-doc/classExemptItem.html2
-rw-r--r--docs/module-doc/classExtMode-members.html2
-rw-r--r--docs/module-doc/classExtMode.html2
-rw-r--r--docs/module-doc/classFileReader-members.html2
-rw-r--r--docs/module-doc/classFileReader.html96
-rw-r--r--docs/module-doc/classHostItem-members.html2
-rw-r--r--docs/module-doc/classHostItem.html2
-rw-r--r--docs/module-doc/classInviteItem-members.html2
-rw-r--r--docs/module-doc/classInviteItem.html2
-rw-r--r--docs/module-doc/classInvited-members.html2
-rw-r--r--docs/module-doc/classInvited.html4
-rw-r--r--docs/module-doc/classModeParameter-members.html2
-rw-r--r--docs/module-doc/classModeParameter.html2
-rw-r--r--docs/module-doc/classModule-members.html7
-rw-r--r--docs/module-doc/classModule.html160
-rw-r--r--docs/module-doc/classModuleFactory-members.html2
-rw-r--r--docs/module-doc/classModuleFactory.html12
-rw-r--r--docs/module-doc/classServer-members.html7
-rw-r--r--docs/module-doc/classServer.html491
-rw-r--r--docs/module-doc/classVersion-members.html2
-rw-r--r--docs/module-doc/classVersion.html2
-rw-r--r--docs/module-doc/classchanrec-members.html2
-rw-r--r--docs/module-doc/classchanrec.html2
-rw-r--r--docs/module-doc/classclassbase-members.html2
-rw-r--r--docs/module-doc/classclassbase.html2
-rw-r--r--docs/module-doc/classcommand__t-members.html2
-rw-r--r--docs/module-doc/classcommand__t.html2
-rw-r--r--docs/module-doc/classconnection-members.html2
-rw-r--r--docs/module-doc/classconnection.html2
-rw-r--r--docs/module-doc/classes.html2
-rw-r--r--docs/module-doc/classpacket-members.html2
-rw-r--r--docs/module-doc/classpacket.html2
-rw-r--r--docs/module-doc/classserverrec-members.html2
-rw-r--r--docs/module-doc/classserverrec.html2
-rw-r--r--docs/module-doc/classucrec-members.html2
-rw-r--r--docs/module-doc/classucrec.html2
-rw-r--r--docs/module-doc/classuserrec-members.html3
-rw-r--r--docs/module-doc/classuserrec.html208
-rw-r--r--docs/module-doc/classuserrec__coll__graph.gifbin12762 -> 15323 bytes
-rw-r--r--docs/module-doc/connection_8h-source.html2
-rw-r--r--docs/module-doc/connection_8h.html2
-rw-r--r--docs/module-doc/ctables_8h-source.html2
-rw-r--r--docs/module-doc/ctables_8h.html2
-rw-r--r--docs/module-doc/files.html2
-rw-r--r--docs/module-doc/functions.html42
-rw-r--r--docs/module-doc/globals.html2
-rw-r--r--docs/module-doc/graph_legend.html2
-rw-r--r--docs/module-doc/hierarchy.html2
-rw-r--r--docs/module-doc/inherits.html2
-rw-r--r--docs/module-doc/main.html2
-rw-r--r--docs/module-doc/modules_8cpp-source.html477
-rw-r--r--docs/module-doc/modules_8cpp.html6
-rw-r--r--docs/module-doc/modules_8h-source.html172
-rw-r--r--docs/module-doc/modules_8h.html14
-rw-r--r--docs/module-doc/namespaces.html2
-rw-r--r--docs/module-doc/namespacestd.html2
-rw-r--r--docs/module-doc/servers_8cpp-source.html2
-rw-r--r--docs/module-doc/servers_8cpp.html2
-rw-r--r--docs/module-doc/servers_8h-source.html2
-rw-r--r--docs/module-doc/servers_8h.html2
-rw-r--r--docs/module-doc/users_8cpp-source.html143
-rw-r--r--docs/module-doc/users_8cpp.html2
-rw-r--r--docs/module-doc/users_8h-source.html114
-rw-r--r--docs/module-doc/users_8h.html6
-rw-r--r--include/inspircd.h4
-rw-r--r--include/modules.h35
-rw-r--r--src/InspIRCd.layout36
-rw-r--r--src/inspircd.cpp39
-rw-r--r--src/modules.cpp23
86 files changed, 1504 insertions, 868 deletions
diff --git a/docs/module-doc/annotated.html b/docs/module-doc/annotated.html
index 09cf078e7..ba6a28182 100644
--- a/docs/module-doc/annotated.html
+++ b/docs/module-doc/annotated.html
@@ -31,7 +31,7 @@
<tr><td class="indexkey"><a class="el" href="classuserrec.html">userrec</a></td><td class="indexvalue">Holds all information about a user This class stores all information about a user connected to the irc server</td></tr>
<tr><td class="indexkey"><a class="el" href="classVersion.html">Version</a></td><td class="indexvalue">Holds a module's Version information The four members (set by the constructor only) indicate details as to the version number of a module</td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/base_8h-source.html b/docs/module-doc/base_8h-source.html
index 90d91f68c..312037b6b 100644
--- a/docs/module-doc/base_8h-source.html
+++ b/docs/module-doc/base_8h-source.html
@@ -29,7 +29,7 @@
00028
00029 <span class="preprocessor">#endif</span>
00030 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/base_8h.html b/docs/module-doc/base_8h.html
index 59654ec59..2302e4b4b 100644
--- a/docs/module-doc/base_8h.html
+++ b/docs/module-doc/base_8h.html
@@ -34,7 +34,7 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classclassbase.html">classbase</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>The base class for all inspircd classes.</em> <a href="classclassbase.html#_details">More...</a><em></em></font><br><br></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:52 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:31 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/channels_8cpp-source.html b/docs/module-doc/channels_8cpp-source.html
index 913a014fa..794137a6f 100644
--- a/docs/module-doc/channels_8cpp-source.html
+++ b/docs/module-doc/channels_8cpp-source.html
@@ -15,7 +15,7 @@
00007
00008 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
00009
-<a name="l00010"></a><a class="code" href="channels_8cpp.html#a0">00010</a> vector&lt;ModeParameter&gt; <a class="code" href="channels_8cpp.html#a0">custom_mode_params</a>;
+<a name="l00010"></a><a class="code" href="channels_8cpp.html#a0">00010</a> std::vector&lt;ModeParameter&gt; <a class="code" href="channels_8cpp.html#a0">custom_mode_params</a>;
00011
<a name="l00012"></a><a class="code" href="classchanrec.html#a4">00012</a> <a class="code" href="classchanrec.html#a4">chanrec::chanrec</a>()
00013 {
@@ -106,7 +106,7 @@
00098 }
00099 <span class="keywordflow">return</span> std::string(<span class="stringliteral">""</span>);
00100 }
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/channels_8cpp.html b/docs/module-doc/channels_8cpp.html
index 203a25b7d..bad0744ee 100644
--- a/docs/module-doc/channels_8cpp.html
+++ b/docs/module-doc/channels_8cpp.html
@@ -26,7 +26,7 @@ Include dependency graph for channels.cpp:<p><center><img src="channels_8cpp__in
<tr><td colspan=2><br><h2>Namespaces</h2></td></tr>
<tr><td nowrap align=right valign=top>namespace &nbsp;</td><td valign=bottom><a class="el" href="namespacestd.html">std</a></td></tr>
<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td nowrap align=right valign=top>vector&lt; <a class="el" href="classModeParameter.html">ModeParameter</a> &gt;&nbsp;</td><td valign=bottom><a class="el" href="channels_8cpp.html#a0">custom_mode_params</a></td></tr>
+<tr><td nowrap align=right valign=top>std::vector&lt; <a class="el" href="classModeParameter.html">ModeParameter</a> &gt;&nbsp;</td><td valign=bottom><a class="el" href="channels_8cpp.html#a0">custom_mode_params</a></td></tr>
</table>
<hr><h2>Variable Documentation</h2>
<a name="a0" doxytag="channels.cpp::custom_mode_params"></a><p>
@@ -35,7 +35,7 @@ Include dependency graph for channels.cpp:<p><center><img src="channels_8cpp__in
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"> vector&lt;<a class="el" href="classModeParameter.html">ModeParameter</a>&gt; custom_mode_params
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="classModeParameter.html">ModeParameter</a>&gt; custom_mode_params
</table>
</td>
</tr>
@@ -55,7 +55,7 @@ Definition at line <a class="el" href="channels_8cpp-source.html#l00010">10</a>
Referenced by <a class="el" href="channels_8cpp-source.html#l00087">chanrec::GetModeParameter()</a>, and <a class="el" href="channels_8cpp-source.html#l00050">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:53 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:32 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/channels_8h-source.html b/docs/module-doc/channels_8h-source.html
index ab5aafb85..2ab21ac97 100644
--- a/docs/module-doc/channels_8h-source.html
+++ b/docs/module-doc/channels_8h-source.html
@@ -129,7 +129,7 @@
00207
00208 <span class="preprocessor">#endif</span>
00209 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/channels_8h.html b/docs/module-doc/channels_8h.html
index 851667269..da09cb5b8 100644
--- a/docs/module-doc/channels_8h.html
+++ b/docs/module-doc/channels_8h.html
@@ -258,7 +258,7 @@ Holds a complete invite list.
Definition at line <a class="el" href="channels_8h-source.html#l00077">77</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:53 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:32 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classAdmin-members.html b/docs/module-doc/classAdmin-members.html
index d071fd79c..933abdb82 100644
--- a/docs/module-doc/classAdmin-members.html
+++ b/docs/module-doc/classAdmin-members.html
@@ -14,7 +14,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classAdmin.html#m0">Name</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classAdmin.html#m2">Nick</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:37 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classAdmin.html b/docs/module-doc/classAdmin.html
index 9ee0a414b..6162a7f9a 100644
--- a/docs/module-doc/classAdmin.html
+++ b/docs/module-doc/classAdmin.html
@@ -160,7 +160,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00081">81</a> of
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:37 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classBanItem-members.html b/docs/module-doc/classBanItem-members.html
index 11213fe07..dc5bff7ca 100644
--- a/docs/module-doc/classBanItem-members.html
+++ b/docs/module-doc/classBanItem-members.html
@@ -15,7 +15,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:59 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:37 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classBanItem.html b/docs/module-doc/classBanItem.html
index d2e17448a..172b021bc 100644
--- a/docs/module-doc/classBanItem.html
+++ b/docs/module-doc/classBanItem.html
@@ -31,7 +31,7 @@ A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to h
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00034">34</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:59 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:37 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classConfigReader-members.html b/docs/module-doc/classConfigReader-members.html
index 7cf7e640b..da85c19aa 100644
--- a/docs/module-doc/classConfigReader-members.html
+++ b/docs/module-doc/classConfigReader-members.html
@@ -17,7 +17,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a5">Verify</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a2">~ConfigReader</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:01 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:40 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classConfigReader.html b/docs/module-doc/classConfigReader.html
index c6d45709f..c9ce89878 100644
--- a/docs/module-doc/classConfigReader.html
+++ b/docs/module-doc/classConfigReader.html
@@ -45,7 +45,7 @@ It may either be instantiated with one parameter or none. Constructing the class
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00359">359</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00428">428</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="ConfigReader::ConfigReader"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -75,13 +75,13 @@ Default constructor.
<p>
This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00265">265</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00294">294</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00364">fname</a>.
+References <a class="el" href="modules_8h-source.html#l00433">fname</a>.
<p>
-<div class="fragment"><pre>00266 {
-00267 <a class="code" href="classConfigReader.html#n0">fname</a> = CONFIG_FILE;
-00268 }
+<div class="fragment"><pre>00295 {
+00296 <a class="code" href="classConfigReader.html#n0">fname</a> = CONFIG_FILE;
+00297 }
</pre></div> </td>
</tr>
</table>
@@ -115,9 +115,9 @@ Overloaded constructor.
<p>
This constructor initialises the ConfigReader class to read a user-specified config file
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00276">276</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00305">305</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00276 : <a class="code" href="classConfigReader.html#n0">fname</a>(filename) { };
+<div class="fragment"><pre>00305 : <a class="code" href="classConfigReader.html#n0">fname</a>(filename) { };
</pre></div> </td>
</tr>
</table>
@@ -150,10 +150,10 @@ Default destructor.
<p>
This method destroys the ConfigReader class.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00271">271</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00300">300</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00272 {
-00273 }
+<div class="fragment"><pre>00301 {
+00302 }
</pre></div> </td>
</tr>
</table>
@@ -188,13 +188,13 @@ Counts the number of times a given tag appears in the config file.
<p>
This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of <a class="el" href="classConfigReader.html#a3">ConfigReader::ReadValue</a> to loop through all copies of a multiple instance tag.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00286">286</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00315">315</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00364">fname</a>.
+References <a class="el" href="modules_8h-source.html#l00433">fname</a>.
<p>
-<div class="fragment"><pre>00287 {
-00288 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str());
-00289 }
+<div class="fragment"><pre>00316 {
+00317 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str());
+00318 }
</pre></div> </td>
</tr>
</table>
@@ -243,15 +243,15 @@ Retrieves a value from the config file.
<p>
This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00278">278</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00307">307</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00364">fname</a>.
+References <a class="el" href="modules_8h-source.html#l00433">fname</a>.
<p>
-<div class="fragment"><pre>00279 {
-00280 <span class="keywordtype">char</span> val[MAXBUF];
-00281 ReadConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str(),name.c_str(),index,val);
-00282 <span class="keywordflow">return</span> val;
-00283 }
+<div class="fragment"><pre>00308 {
+00309 <span class="keywordtype">char</span> val[MAXBUF];
+00310 ReadConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str(),name.c_str(),index,val);
+00311 <span class="keywordflow">return</span> val;
+00312 }
</pre></div> </td>
</tr>
</table>
@@ -284,11 +284,11 @@ Returns true if a config file is valid.
<p>
This method is unimplemented and will always return true.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00292">292</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00321">321</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00293 {
-00294 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00295 }
+<div class="fragment"><pre>00322 {
+00323 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00324 }
</pre></div> </td>
</tr>
</table>
@@ -316,14 +316,14 @@ The filename of the configuration file, as set by the constructor.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00364">364</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00433">433</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00265">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00286">Enumerate()</a>, and <a class="el" href="modules_8cpp-source.html#l00278">ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00294">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00315">Enumerate()</a>, and <a class="el" href="modules_8cpp-source.html#l00307">ReadValue()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:01 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:40 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classConnectClass-members.html b/docs/module-doc/classConnectClass-members.html
index 5dbcde024..eff3f7885 100644
--- a/docs/module-doc/classConnectClass-members.html
+++ b/docs/module-doc/classConnectClass-members.html
@@ -9,11 +9,13 @@
<hr><h1>ConnectClass Member List</h1>This is the complete list of members for <a class="el" href="classConnectClass.html">ConnectClass</a>, including all inherited members.<table>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#m0">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m1">host</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m2">pass</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#a0">ConnectClass</a>()</td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m2">host</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m3">pass</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m1">registration_timeout</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m0">type</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:02 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:40 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classConnectClass.html b/docs/module-doc/classConnectClass.html
index 8b21187f6..a9c8c7ced 100644
--- a/docs/module-doc/classConnectClass.html
+++ b/docs/module-doc/classConnectClass.html
@@ -21,18 +21,59 @@ Inheritance diagram for ConnectClass:<p><center><img src="classConnectClass__inh
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classConnectClass-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#a0">ConnectClass</a> ()</td></tr>
<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#m0">type</a></td></tr>
-<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#m1">host</a> [MAXBUF]</td></tr>
-<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#m2">pass</a> [MAXBUF]</td></tr>
+<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#m1">registration_timeout</a></td></tr>
+<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#m2">host</a> [MAXBUF]</td></tr>
+<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="classConnectClass.html#m3">pass</a> [MAXBUF]</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Holds information relevent to &lt;connect allow&gt; and &lt;connect deny&gt; tags in the config file.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
-<a name="m1" doxytag="ConnectClass::host"></a><p>
+Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="ConnectClass::ConnectClass"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> ConnectClass::ConnectClass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8h-source.html#l00042">42</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+<div class="fragment"><pre>00043 {
+00044 <a class="code" href="classConnectClass.html#m1">registration_timeout</a> = 0;
+00045 strcpy(host,<span class="stringliteral">""</span>);
+00046 strcpy(pass,<span class="stringliteral">""</span>);
+00047 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Data Documentation</h2>
+<a name="m2" doxytag="ConnectClass::host"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@@ -53,10 +94,10 @@ Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00038">38</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00039">39</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
-<a name="m2" doxytag="ConnectClass::pass"></a><p>
+<a name="m3" doxytag="ConnectClass::pass"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
@@ -77,7 +118,31 @@ Definition at line <a class="el" href="users_8h-source.html#l00038">38</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00039">39</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00040">40</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+ </tr>
+</table>
+<a name="m1" doxytag="ConnectClass::registration_timeout"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int ConnectClass::registration_timeout
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8h-source.html#l00038">38</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="m0" doxytag="ConnectClass::type"></a><p>
@@ -106,7 +171,7 @@ Definition at line <a class="el" href="users_8h-source.html#l00037">37</a> of fi
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:02 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:40 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classConnectClass__coll__graph.gif b/docs/module-doc/classConnectClass__coll__graph.gif
index cd3ab3488..14f3c91f4 100644
--- a/docs/module-doc/classConnectClass__coll__graph.gif
+++ b/docs/module-doc/classConnectClass__coll__graph.gif
Binary files differ
diff --git a/docs/module-doc/classExemptItem-members.html b/docs/module-doc/classExemptItem-members.html
index f8b642a0d..50d96beef 100644
--- a/docs/module-doc/classExemptItem-members.html
+++ b/docs/module-doc/classExemptItem-members.html
@@ -15,7 +15,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:03 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:41 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classExemptItem.html b/docs/module-doc/classExemptItem.html
index ae83f8505..f6e809492 100644
--- a/docs/module-doc/classExemptItem.html
+++ b/docs/module-doc/classExemptItem.html
@@ -31,7 +31,7 @@ A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to h
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00042">42</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:03 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:41 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classExtMode-members.html b/docs/module-doc/classExtMode-members.html
index 10d5b33a4..40bfcedda 100644
--- a/docs/module-doc/classExtMode-members.html
+++ b/docs/module-doc/classExtMode-members.html
@@ -13,7 +13,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classExtMode.html#m3">params_when_off</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classExtMode.html#m2">params_when_on</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classExtMode.html#m1">type</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:03 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:42 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classExtMode.html b/docs/module-doc/classExtMode.html
index a2030b0de..03d41e6b1 100644
--- a/docs/module-doc/classExtMode.html
+++ b/docs/module-doc/classExtMode.html
@@ -203,7 +203,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00021">21</a> o
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:03 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:42 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classFileReader-members.html b/docs/module-doc/classFileReader-members.html
index 96afd8bc5..7d3c9bc01 100644
--- a/docs/module-doc/classFileReader-members.html
+++ b/docs/module-doc/classFileReader-members.html
@@ -18,7 +18,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classFileReader.html#a3">LoadFile</a>(std::string filename)</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classFileReader.html#a2">~FileReader</a>()</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:04 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:42 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classFileReader.html b/docs/module-doc/classFileReader.html
index 0894d7d4d..f8fd1a23b 100644
--- a/docs/module-doc/classFileReader.html
+++ b/docs/module-doc/classFileReader.html
@@ -45,7 +45,7 @@ This class contains methods for read-only manipulation of a text file in memory.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00404">404</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00473">473</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="FileReader::FileReader"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -75,10 +75,10 @@ Default constructor.
<p>
This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00305">305</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00334">334</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00306 {
-00307 }
+<div class="fragment"><pre>00335 {
+00336 }
</pre></div> </td>
</tr>
</table>
@@ -112,15 +112,15 @@ Secondary constructor.
<p>
This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#a6">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00298">298</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00327">327</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00406">fc</a>, and <a class="el" href="modules_8h-source.html#l00029">file_cache</a>.
+References <a class="el" href="modules_8h-source.html#l00475">fc</a>, and <a class="el" href="modules_8h-source.html#l00029">file_cache</a>.
<p>
-<div class="fragment"><pre>00299 {
-00300 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00301 readfile(c,filename.c_str());
-00302 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
-00303 }
+<div class="fragment"><pre>00328 {
+00329 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00330 readfile(c,filename.c_str());
+00331 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
+00332 }
</pre></div> </td>
</tr>
</table>
@@ -153,10 +153,10 @@ Default destructor.
<p>
This deletes the memory allocated to the file.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00317">317</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00346">346</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00318 {
-00319 }
+<div class="fragment"><pre>00347 {
+00348 }
</pre></div> </td>
</tr>
</table>
@@ -190,20 +190,20 @@ Retrieve one line from the file.
<p>
This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00321">321</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00350">350</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00406">fc</a>.
+References <a class="el" href="modules_8h-source.html#l00475">fc</a>.
<p>
-<div class="fragment"><pre>00322 {
-00323 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
-00324 {
-00325 <span class="keywordflow">return</span>(false);
-00326 }
-00327 <span class="keywordflow">else</span>
-00328 {
-00329 <span class="keywordflow">return</span>(true);
-00330 }
-00331 }
+<div class="fragment"><pre>00351 {
+00352 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
+00353 {
+00354 <span class="keywordflow">return</span>(false);
+00355 }
+00356 <span class="keywordflow">else</span>
+00357 {
+00358 <span class="keywordflow">return</span>(true);
+00359 }
+00360 }
</pre></div> </td>
</tr>
</table>
@@ -236,13 +236,13 @@ Returns the size of the file in lines.
<p>
This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00340">340</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00369">369</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00406">fc</a>.
+References <a class="el" href="modules_8h-source.html#l00475">fc</a>.
<p>
-<div class="fragment"><pre>00341 {
-00342 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
-00343 }
+<div class="fragment"><pre>00370 {
+00371 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
+00372 }
</pre></div> </td>
</tr>
</table>
@@ -274,15 +274,15 @@ References <a class="el" href="modules_8h-source.html#l00406">fc</a>.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00333">333</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00362">362</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00406">fc</a>.
+References <a class="el" href="modules_8h-source.html#l00475">fc</a>.
<p>
-<div class="fragment"><pre>00334 {
-00335 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#o0">fc</a>.size()))
-00336 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00337 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
-00338 }
+<div class="fragment"><pre>00363 {
+00364 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#o0">fc</a>.size()))
+00365 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00366 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
+00367 }
</pre></div> </td>
</tr>
</table>
@@ -316,15 +316,15 @@ Used to load a file.
<p>
This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#a6">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00309">309</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00338">338</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00406">fc</a>, and <a class="el" href="modules_8h-source.html#l00029">file_cache</a>.
+References <a class="el" href="modules_8h-source.html#l00475">fc</a>, and <a class="el" href="modules_8h-source.html#l00029">file_cache</a>.
<p>
-<div class="fragment"><pre>00310 {
-00311 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00312 readfile(c,filename.c_str());
-00313 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
-00314 }
+<div class="fragment"><pre>00339 {
+00340 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00341 readfile(c,filename.c_str());
+00342 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
+00343 }
</pre></div> </td>
</tr>
</table>
@@ -350,14 +350,14 @@ References <a class="el" href="modules_8h-source.html#l00406">fc</a>, and <a cla
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00406">406</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00475">475</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00321">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00298">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00340">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00333">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00309">LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00350">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00327">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00369">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00362">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00338">LoadFile()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:04 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:42 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classHostItem-members.html b/docs/module-doc/classHostItem-members.html
index 813515ab7..de1f43e66 100644
--- a/docs/module-doc/classHostItem-members.html
+++ b/docs/module-doc/classHostItem-members.html
@@ -15,7 +15,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:05 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:43 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classHostItem.html b/docs/module-doc/classHostItem.html
index e0e6d9c03..ef1efe681 100644
--- a/docs/module-doc/classHostItem.html
+++ b/docs/module-doc/classHostItem.html
@@ -181,7 +181,7 @@ Definition at line <a class="el" href="channels_8h-source.html#l00021">21</a> of
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:05 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:43 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classInviteItem-members.html b/docs/module-doc/classInviteItem-members.html
index a2b583ddf..7d804e81f 100644
--- a/docs/module-doc/classInviteItem-members.html
+++ b/docs/module-doc/classInviteItem-members.html
@@ -15,7 +15,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:06 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:44 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classInviteItem.html b/docs/module-doc/classInviteItem.html
index df689f1f0..33dbef1a7 100644
--- a/docs/module-doc/classInviteItem.html
+++ b/docs/module-doc/classInviteItem.html
@@ -31,7 +31,7 @@ A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to h
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00050">50</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:06 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:44 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classInvited-members.html b/docs/module-doc/classInvited-members.html
index 93bf19883..6c01785b1 100644
--- a/docs/module-doc/classInvited-members.html
+++ b/docs/module-doc/classInvited-members.html
@@ -11,7 +11,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classInvited.html#m0">channel</a></td><td><a class="el" href="classInvited.html">Invited</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:05 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:43 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classInvited.html b/docs/module-doc/classInvited.html
index 0752dd3d2..ddf9be71d 100644
--- a/docs/module-doc/classInvited.html
+++ b/docs/module-doc/classInvited.html
@@ -53,12 +53,12 @@ Definition at line <a class="el" href="users_8h-source.html#l00025">25</a> of fi
<p>
Definition at line <a class="el" href="users_8h-source.html#l00028">28</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::InviteTo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00064">userrec::InviteTo()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:05 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:43 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classModeParameter-members.html b/docs/module-doc/classModeParameter-members.html
index 378d6ca09..633881fcd 100644
--- a/docs/module-doc/classModeParameter-members.html
+++ b/docs/module-doc/classModeParameter-members.html
@@ -13,7 +13,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModeParameter.html#m0">mode</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModeParameter.html#m1">parameter</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:06 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:44 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classModeParameter.html b/docs/module-doc/classModeParameter.html
index f1b2d67c9..94c5e0ea7 100644
--- a/docs/module-doc/classModeParameter.html
+++ b/docs/module-doc/classModeParameter.html
@@ -114,7 +114,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00050">chanrec::Set
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:06 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:44 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classModule-members.html b/docs/module-doc/classModule-members.html
index e4ea6aaec..cd2923123 100644
--- a/docs/module-doc/classModule-members.html
+++ b/docs/module-doc/classModule-members.html
@@ -11,8 +11,10 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a2">GetVersion</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a0">Module</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a12">Module::OnUserPreJoin</a>(userrec *user, chanrec *chan, char *cname)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a15">Module::OnWhois</a>(userrec *source, userrec *dest)</td><td><a class="el" href="classModule.html">Module</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a11">OnExtendedMode</a>(userrec *user, void *target, char modechar, int type, bool mode_on, string_list &amp;params)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a14">OnInfo</a>(userrec *user)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a13">OnOper</a>(userrec *user)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a8">OnPacketReceive</a>(char *p)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a7">OnPacketTransmit</a>(char *p)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a9">OnRehash</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
@@ -20,10 +22,11 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a3">OnUserConnect</a>(userrec *user)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a5">OnUserJoin</a>(userrec *user, chanrec *channel)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a6">OnUserPart</a>(userrec *user, chanrec *channel)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a12">OnUserPreJoin</a>(userrec *user, chanrec *chan, const char *cname)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a4">OnUserQuit</a>(userrec *user)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a1">~Module</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:07 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:45 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classModule.html b/docs/module-doc/classModule.html
index a055fef1e..5e85deac7 100644
--- a/docs/module-doc/classModule.html
+++ b/docs/module-doc/classModule.html
@@ -46,8 +46,14 @@ Inheritance diagram for Module:<p><center><img src="classModule__inherit__graph.
<tr><td>&nbsp;</td><td><font size=-1><em>Called when a raw command is transmitted or received.</em> <a href="#a10"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="classModule.html#a11">OnExtendedMode</a> (<a class="el" href="classuserrec.html">userrec</a> *user, void *target, char modechar, int type, bool mode_on, <a class="el" href="modules_8h.html#a11">string_list</a> &amp;params)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Called whenever an extended mode is to be processed.</em> <a href="#a11"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="classModule.html#a12">Module::OnUserPreJoin</a> (<a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classchanrec.html">chanrec</a> *chan, char *cname)</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="classModule.html#a12">OnUserPreJoin</a> (<a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classchanrec.html">chanrec</a> *chan, const char *cname)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Called whenever a user is about to join a channel, before any processing is done.</em> <a href="#a12"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="classModule.html#a13">OnOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Called whenever a user opers locally.</em> <a href="#a13"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="classModule.html#a14">OnInfo</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Called whenever a user types /INFO.</em> <a href="#a14"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classModule.html#a15">Module::OnWhois</a> (<a class="el" href="classuserrec.html">userrec</a> *source, <a class="el" href="classuserrec.html">userrec</a> *dest)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Called whenever a /WHOIS is performed on a local user.</em> <a href="#a15"></a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Base class for all InspIRCd modules This class is the base class for InspIRCd modules.
@@ -163,33 +169,27 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00119">119</a>
</pre></div> </td>
</tr>
</table>
-<a name="a12" doxytag="Module::Module::OnUserPreJoin"></a><p>
+<a name="a15" doxytag="Module::Module::OnWhois"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"> virtual int Module::Module::OnUserPreJoin </td>
+ <td class="md" nowrap valign="top"> void Module::Module::OnWhois </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>user</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>chan</em>, </td>
+ <td class="mdname" nowrap>&nbsp; <em>source</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>cname</em></td>
+ <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>dest</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
- <td class="md" colspan="2"><code> [virtual]</code></td>
+ <td class="md" colspan="2"></td>
</tr>
</table>
@@ -204,11 +204,9 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00119">119</a>
<td>
<p>
-Called whenever a user is about to join a channel, before any processing is done.
+Called whenever a /WHOIS is performed on a local user.
<p>
-Returning any nonzero value from this function stops the process immediately, causing no output to be sent to the user by the core. If you do this you must produce your own numerics, notices etc. This is useful for modules which may want to mimic +b, +k, +l etc.<p>
-IMPORTANT NOTE!<p>
-If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be called BEFORE the channel record is created. This will cause chanrec* chan to be NULL. There is very little you can do in form of processing on the actual channel record at this point, however the channel NAME will still be passed in char* cname, so that you could for example implement a channel blacklist or whitelist, etc. </td>
+The source parameter contains the details of the user who issued the WHOIS command, and the dest parameter contains the information of the user they are whoising. </td>
</tr>
</table>
<a name="a11" doxytag="Module::OnExtendedMode"></a><p>
@@ -280,6 +278,79 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00118">118</a>
</pre></div> </td>
</tr>
</table>
+<a name="a14" doxytag="Module::OnInfo"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void Module::OnInfo </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>user</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Called whenever a user types /INFO.
+<p>
+The userrec will contain the information of the user who typed the command. Modules may use this method to output their own credits in /INFO (which is the ircd's version of an about box). It is purposefully not possible to modify any info that has already been output, or halt the list. You must write a 371 numeric to the user, containing your info in the following format:<p>
+:information here
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00121 { };
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a13" doxytag="Module::OnOper"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void Module::OnOper </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>user</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Called whenever a user opers locally.
+<p>
+The userrec will contain the oper mode 'o' as this function is called after any modifications are made to the user's structure by the core.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00120 { };
+</pre></div> </td>
+ </tr>
+</table>
<a name="a8" doxytag="Module::OnPacketReceive"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -558,6 +629,59 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00112">112</a>
</pre></div> </td>
</tr>
</table>
+<a name="a12" doxytag="Module::OnUserPreJoin"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int Module::OnUserPreJoin </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>chan</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>cname</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Called whenever a user is about to join a channel, before any processing is done.
+<p>
+Returning any nonzero value from this function stops the process immediately, causing no output to be sent to the user by the core. If you do this you must produce your own numerics, notices etc. This is useful for modules which may want to mimic +b, +k, +l etc.<p>
+IMPORTANT NOTE!<p>
+If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be called BEFORE the channel record is created. This will cause chanrec* chan to be NULL. There is very little you can do in form of processing on the actual channel record at this point, however the channel NAME will still be passed in char* cname, so that you could for example implement a channel blacklist or whitelist, etc.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00117">117</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00117 { <span class="keywordflow">return</span> 0; }
+</pre></div> </td>
+ </tr>
+</table>
<a name="a4" doxytag="Module::OnUserQuit"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -596,7 +720,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00110">110</a>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:07 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:45 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classModuleFactory-members.html b/docs/module-doc/classModuleFactory-members.html
index 243655f4d..0840ab551 100644
--- a/docs/module-doc/classModuleFactory-members.html
+++ b/docs/module-doc/classModuleFactory-members.html
@@ -13,7 +13,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModuleFactory.html#a0">ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModuleFactory.html#a1">~ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:08 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:45 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classModuleFactory.html b/docs/module-doc/classModuleFactory.html
index d9f421a96..78c3eb526 100644
--- a/docs/module-doc/classModuleFactory.html
+++ b/docs/module-doc/classModuleFactory.html
@@ -34,7 +34,7 @@ This is to allow for modules to create many different variants of <a class="el"
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00450">450</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00519">519</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="ModuleFactory::ModuleFactory"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -62,9 +62,9 @@ Definition at line <a class="el" href="modules_8h-source.html#l00450">450</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00453">453</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00522">522</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-<div class="fragment"><pre>00453 { }
+<div class="fragment"><pre>00522 { }
</pre></div> </td>
</tr>
</table>
@@ -95,9 +95,9 @@ Definition at line <a class="el" href="modules_8h-source.html#l00453">453</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00454">454</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00523">523</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-<div class="fragment"><pre>00454 { }
+<div class="fragment"><pre>00523 { }
</pre></div> </td>
</tr>
</table>
@@ -134,7 +134,7 @@ Your inherited class of ModuleFactory must return a pointer to your <a class="el
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:08 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:45 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classServer-members.html b/docs/module-doc/classServer-members.html
index 3ad73eaeb..26fd1f03c 100644
--- a/docs/module-doc/classServer-members.html
+++ b/docs/module-doc/classServer-members.html
@@ -10,6 +10,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a20">AddCommand</a>(char *cmd, handlerfunc f, char flags, int minparams)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a19">AddExtendedMode</a>(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#m0">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a25">ChangeUserNick</a>(userrec *user, std::string nickname)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a15">ChanMode</a>(userrec *User, chanrec *Chan)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a9">CommonChannels</a>(userrec *u1, userrec *u2)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
@@ -20,6 +21,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a16">GetServerName</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a12">IsNick</a>(std::string nick)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a3">Log</a>(int level, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a26">QuitUser</a>(userrec *user, std::string reason)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a4">Send</a>(int Socket, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a8">SendChannel</a>(userrec *User, chanrec *Channel, std::string s, bool IncludeSender)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a10">SendCommon</a>(userrec *User, std::string text, bool IncludeSender)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
@@ -28,11 +30,14 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a2">SendOpers</a>(std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a5">SendServ</a>(int Socket, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a7">SendTo</a>(userrec *Source, userrec *Dest, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a22">SendToModeMask</a>(std::string modes, int flags, std::string text)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a11">SendWallops</a>(userrec *User, std::string text)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a0">Server</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a23">Server::JoinUserToChannel</a>(userrec *user, std::string cname, std::string key)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a24">Server::PartUserFromChannel</a>(userrec *user, std::string cname, std::string reason)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a1">~Server</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:09 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:46 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classServer.html b/docs/module-doc/classServer.html
index b6c3a546f..427f273cf 100644
--- a/docs/module-doc/classServer.html
+++ b/docs/module-doc/classServer.html
@@ -66,6 +66,16 @@ Inheritance diagram for Server:<p><center><img src="classServer__inherit__graph.
<tr><td>&nbsp;</td><td><font size=-1><em>Adds a command to the command table.</em> <a href="#a20"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="classServer.html#a21">SendMode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Sends a servermode.</em> <a href="#a21"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="classServer.html#a22">SendToModeMask</a> (std::string modes, int flags, std::string text)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sends to all users matching a mode mask You must specify one or more usermodes as the first parameter.</em> <a href="#a22"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td><td valign=bottom><a class="el" href="classServer.html#a23">Server::JoinUserToChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string cname, std::string key)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Forces a user to join a channel.</em> <a href="#a23"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td><td valign=bottom><a class="el" href="classServer.html#a24">Server::PartUserFromChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string cname, std::string reason)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Forces a user to part a channel.</em> <a href="#a24"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="classServer.html#a25">ChangeUserNick</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string nickname)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Forces a user nickchange.</em> <a href="#a25"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="classServer.html#a26">QuitUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string reason)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Forces a user to quit with the specified reason.</em> <a href="#a26"></a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Allows server output and query functions This class contains methods which allow a module to query the state of the irc server, and produce output to users and other servers.
@@ -74,7 +84,7 @@ All modules should instantiate at least one copy of this class, and use its memb
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00197">197</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00219">219</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="Server::Server"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -104,10 +114,10 @@ Default constructor.
<p>
Creates a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00125">125</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00128">128</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00126 {
-00127 }
+<div class="fragment"><pre>00129 {
+00130 }
</pre></div> </td>
</tr>
</table>
@@ -140,10 +150,10 @@ Default destructor.
<p>
Destroys a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00129">129</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00132">132</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00130 {
-00131 }
+<div class="fragment"><pre>00133 {
+00134 }
</pre></div> </td>
</tr>
</table>
@@ -201,13 +211,13 @@ This allows modules to add extra commands into the command table. You must place
typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)<p>
When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00172">172</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
References <a class="el" href="modules_8h.html#a13">createcommand()</a>.
<p>
-<div class="fragment"><pre>00144 {
-00145 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
-00146 }
+<div class="fragment"><pre>00173 {
+00174 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
+00175 }
</pre></div> </td>
</tr>
</table>
@@ -268,28 +278,75 @@ Adds an extended mode letter which is parsed by a module This allows modules to
<p>
+x for hostcloak. the "type" parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00244">244</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00273">273</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
References <a class="el" href="modules_8cpp-source.html#l00089">DoAddExtendedMode()</a>, <a class="el" href="modules_8h-source.html#l00018">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00019">MT_SERVER</a>.
<p>
-<div class="fragment"><pre>00245 {
-00246 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00247 {
-00248 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00249 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00250 }
-00251 <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>))
-00252 {
-00253 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-00254 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00255 }
-00256 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
-00257 {
-00258 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-00259 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00260 }
-00261 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00262 }
+<div class="fragment"><pre>00274 {
+00275 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
+00276 {
+00277 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+00278 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00279 }
+00280 <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>))
+00281 {
+00282 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00283 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00284 }
+00285 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+00286 {
+00287 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00288 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00289 }
+00290 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00291 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a25" doxytag="Server::ChangeUserNick"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void Server::ChangeUserNick </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>nickname</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Forces a user nickchange.
+<p>
+This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00156">156</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00157 {
+00158 force_nickchange(user,nickname.c_str());
+00159 }
</pre></div> </td>
</tr>
</table>
@@ -332,11 +389,11 @@ Attempts to look up a user's privilages on a channel.
<p>
This function will return a string containing either @, , +, or an empty string, representing the user's privilages upon the channel you specify.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00251">251</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00223 {
-00224 <span class="keywordflow">return</span> cmode(User,Chan);
-00225 }
+<div class="fragment"><pre>00252 {
+00253 <span class="keywordflow">return</span> cmode(User,Chan);
+00254 }
</pre></div> </td>
</tr>
</table>
@@ -379,11 +436,11 @@ Returns true if two users share a common channel.
<p>
This method is used internally by the NICK and QUIT commands, and the <a class="el" href="classServer.html#a10">Server::SendCommon</a> method.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00185">185</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00214">214</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00186 {
-00187 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
-00188 }
+<div class="fragment"><pre>00215 {
+00216 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
+00217 }
</pre></div> </td>
</tr>
</table>
@@ -417,11 +474,11 @@ Attempts to look up a channel and return a pointer to it.
<p>
This function will return NULL if the channel does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00217">217</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00246">246</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00218 {
-00219 <span class="keywordflow">return</span> FindChan(channel.c_str());
-00220 }
+<div class="fragment"><pre>00247 {
+00248 <span class="keywordflow">return</span> FindChan(channel.c_str());
+00249 }
</pre></div> </td>
</tr>
</table>
@@ -455,11 +512,11 @@ Attempts to look up a nick and return a pointer to it.
<p>
This function will return NULL if the nick does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00212">212</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00241">241</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00213 {
-00214 <span class="keywordflow">return</span> Find(nick);
-00215 }
+<div class="fragment"><pre>00242 {
+00243 <span class="keywordflow">return</span> Find(nick);
+00244 }
</pre></div> </td>
</tr>
</table>
@@ -492,11 +549,11 @@ Returns the information of the server as returned by the /ADMIN command.
<p>
See the <a class="el" href="classAdmin.html">Admin</a> class for further information of the return value. The members <a class="el" href="classAdmin.html#m2">Admin::Nick</a>, <a class="el" href="classAdmin.html#m1">Admin::Email</a> and <a class="el" href="classAdmin.html#m0">Admin::Name</a> contain the information for the server where the module is loaded.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00237">237</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00266">266</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00238 {
-00239 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
-00240 }
+<div class="fragment"><pre>00267 {
+00268 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00269 }
</pre></div> </td>
</tr>
</table>
@@ -529,11 +586,11 @@ Returns the network name, global to all linked servers.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00232">232</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00261">261</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00233 {
-00234 <span class="keywordflow">return</span> getnetworkname();
-00235 }
+<div class="fragment"><pre>00262 {
+00263 <span class="keywordflow">return</span> getnetworkname();
+00264 }
</pre></div> </td>
</tr>
</table>
@@ -566,11 +623,11 @@ Returns the server name of the server where the module is loaded.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00227">227</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00256">256</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00228 {
-00229 <span class="keywordflow">return</span> getservername();
-00230 }
+<div class="fragment"><pre>00257 {
+00258 <span class="keywordflow">return</span> getservername();
+00259 }
</pre></div> </td>
</tr>
</table>
@@ -604,11 +661,11 @@ Returns true if a nick is valid.
<p>
Nicks for unregistered connections will return false.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00207">207</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00236">236</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00208 {
-00209 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
-00210 }
+<div class="fragment"><pre>00237 {
+00238 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
+00239 }
</pre></div> </td>
</tr>
</table>
@@ -651,11 +708,60 @@ Writes a log string.
<p>
This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00138">138</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00167">167</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00168 {
+00169 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00170 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a26" doxytag="Server::QuitUser"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void Server::QuitUser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>reason</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Forces a user to quit with the specified reason.
+<p>
+To the user, it will appear as if they typed /QUIT themselves, except for the fact that this function may bypass the quit prefix specified in the config file.<p>
+WARNING!<p>
+Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00161">161</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00139 {
-00140 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
-00141 }
+<div class="fragment"><pre>00162 {
+00163 kill_link(user,reason.c_str());
+00164 }
</pre></div> </td>
</tr>
</table>
@@ -698,11 +804,11 @@ Sends a line of text down a TCP/IP socket.
<p>
This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00153">153</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00182">182</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00154 {
-00155 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00156 }
+<div class="fragment"><pre>00183 {
+00184 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00185 }
</pre></div> </td>
</tr>
</table>
@@ -757,18 +863,18 @@ Sends text from a user to a channel (mulicast).
<p>
This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00173">173</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-<div class="fragment"><pre>00174 {
-00175 <span class="keywordflow">if</span> (IncludeSender)
-00176 {
-00177 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00178 }
-00179 <span class="keywordflow">else</span>
-00180 {
-00181 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00182 }
-00183 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00202">202</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00203 {
+00204 <span class="keywordflow">if</span> (IncludeSender)
+00205 {
+00206 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00207 }
+00208 <span class="keywordflow">else</span>
+00209 {
+00210 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00211 }
+00212 }
</pre></div> </td>
</tr>
</table>
@@ -817,18 +923,18 @@ Sends text from a user to one or more channels (mulicast).
<p>
This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00190">190</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-<div class="fragment"><pre>00191 {
-00192 <span class="keywordflow">if</span> (IncludeSender)
-00193 {
-00194 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00195 }
-00196 <span class="keywordflow">else</span>
-00197 {
-00198 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00199 }
-00200 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00219">219</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00220 {
+00221 <span class="keywordflow">if</span> (IncludeSender)
+00222 {
+00223 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00224 }
+00225 <span class="keywordflow">else</span>
+00226 {
+00227 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00228 }
+00229 }
</pre></div> </td>
</tr>
</table>
@@ -877,11 +983,11 @@ Sends text from a user to a socket.
<p>
This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00163">163</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00192">192</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00164 {
-00165 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00166 }
+<div class="fragment"><pre>00193 {
+00194 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00195 }
</pre></div> </td>
</tr>
</table>
@@ -937,13 +1043,13 @@ modes[2] = user-&gt;nick;<p>
Srv-&gt;SendMode(modes,3,user);<p>
The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00148">148</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00177">177</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
References <a class="el" href="modules_8h.html#a14">server_mode()</a>.
<p>
-<div class="fragment"><pre>00149 {
-00150 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
-00151 }
+<div class="fragment"><pre>00178 {
+00179 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
+00180 }
</pre></div> </td>
</tr>
</table>
@@ -977,11 +1083,11 @@ Sends text to all opers.
<p>
This method sends a server notice to all opers with the usermode +s.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00133">133</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00136">136</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00134 {
-00135 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
-00136 }
+<div class="fragment"><pre>00137 {
+00138 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+00139 }
</pre></div> </td>
</tr>
</table>
@@ -1024,11 +1130,11 @@ Sends text from the server to a socket.
<p>
This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00158">158</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00187">187</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00159 {
-00160 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00161 }
+<div class="fragment"><pre>00188 {
+00189 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00190 }
</pre></div> </td>
</tr>
</table>
@@ -1077,11 +1183,66 @@ Sends text from a user to another user.
<p>
This method writes a line of text to a user, with a user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00168">168</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00197">197</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00169 {
-00170 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-00171 }
+<div class="fragment"><pre>00198 {
+00199 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00200 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a22" doxytag="Server::SendToModeMask"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void Server::SendToModeMask </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>modes</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>text</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sends to all users matching a mode mask You must specify one or more usermodes as the first parameter.
+<p>
+These can be RFC specified modes such as +i, or module provided modes, including ones provided by your own module. In the second parameter you must place a flag value which indicates wether the modes you have given will be logically ANDed or OR'ed. You may use one of either WM_AND or WM_OR. for example, if you were to use:<p>
+Serv-&gt;SendToModeMask("xi", WM_OR, "m00");<p>
+Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00141">141</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00142 {
+00143 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00144 }
</pre></div> </td>
</tr>
</table>
@@ -1124,17 +1285,109 @@ Sends a WALLOPS message.
<p>
This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00202">202</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00231">231</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00203 {
-00204 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00205 }
+<div class="fragment"><pre>00232 {
+00233 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00234 }
</pre></div> </td>
</tr>
</table>
+<a name="a23" doxytag="Server::Server::JoinUserToChannel"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="classchanrec.html">chanrec</a>* Server::Server::JoinUserToChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>cname</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Forces a user to join a channel.
+<p>
+This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL. </td>
+ </tr>
+</table>
+<a name="a24" doxytag="Server::Server::PartUserFromChannel"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="classchanrec.html">chanrec</a>* Server::Server::PartUserFromChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>cname</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>reason</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Forces a user to part a channel.
+<p>
+This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version. </td>
+ </tr>
+</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:09 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:46 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classVersion-members.html b/docs/module-doc/classVersion-members.html
index 968092286..323c0a20d 100644
--- a/docs/module-doc/classVersion-members.html
+++ b/docs/module-doc/classVersion-members.html
@@ -15,7 +15,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classVersion.html#m2">Revision</a></td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classVersion.html#a0">Version</a>(int major, int minor, int revision, int build)</td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:12 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classVersion.html b/docs/module-doc/classVersion.html
index 1ab40ce5d..838d5c98e 100644
--- a/docs/module-doc/classVersion.html
+++ b/docs/module-doc/classVersion.html
@@ -191,7 +191,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00069">69</a> of
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:12 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classchanrec-members.html b/docs/module-doc/classchanrec-members.html
index c5af99153..dee9277d6 100644
--- a/docs/module-doc/classchanrec-members.html
+++ b/docs/module-doc/classchanrec-members.html
@@ -31,7 +31,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classchanrec.html#m4">topicset</a></td><td><a class="el" href="classchanrec.html">chanrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classchanrec.html#a5">~chanrec</a>()</td><td><a class="el" href="classchanrec.html">chanrec</a></td><td><code> [inline, virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:00 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:38 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classchanrec.html b/docs/module-doc/classchanrec.html
index bab610de1..72840f058 100644
--- a/docs/module-doc/classchanrec.html
+++ b/docs/module-doc/classchanrec.html
@@ -808,7 +808,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00012">chanrec()</a
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a><li><a class="el" href="channels_8cpp-source.html">channels.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:00 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:38 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classclassbase-members.html b/docs/module-doc/classclassbase-members.html
index f4bcb1417..482af2c23 100644
--- a/docs/module-doc/classclassbase-members.html
+++ b/docs/module-doc/classclassbase-members.html
@@ -10,7 +10,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#m0">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:00 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:38 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classclassbase.html b/docs/module-doc/classclassbase.html
index f48c5591f..93c304f4e 100644
--- a/docs/module-doc/classclassbase.html
+++ b/docs/module-doc/classclassbase.html
@@ -144,7 +144,7 @@ Definition at line <a class="el" href="base_8h-source.html#l00020">20</a> of fil
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:00 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:38 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classcommand__t-members.html b/docs/module-doc/classcommand__t-members.html
index c177a4241..3be94d6e2 100644
--- a/docs/module-doc/classcommand__t-members.html
+++ b/docs/module-doc/classcommand__t-members.html
@@ -16,7 +16,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classcommand__t.html#m5">total_bytes</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classcommand__t.html#m4">use_count</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:01 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:39 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classcommand__t.html b/docs/module-doc/classcommand__t.html
index 52eb4e11a..4dd1271ae 100644
--- a/docs/module-doc/classcommand__t.html
+++ b/docs/module-doc/classcommand__t.html
@@ -199,7 +199,7 @@ Definition at line <a class="el" href="ctables_8h-source.html#l00044">44</a> of
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ctables_8h-source.html">ctables.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:01 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:39 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classconnection-members.html b/docs/module-doc/classconnection-members.html
index 0dcf53d1f..7039d4508 100644
--- a/docs/module-doc/classconnection-members.html
+++ b/docs/module-doc/classconnection-members.html
@@ -36,7 +36,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classconnection.html#m13">signon</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classconnection.html#a3">TerminateLink</a>(char *targethost)</td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:02 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:41 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classconnection.html b/docs/module-doc/classconnection.html
index 850b9b66c..af6a2f6c5 100644
--- a/docs/module-doc/classconnection.html
+++ b/docs/module-doc/classconnection.html
@@ -837,7 +837,7 @@ Referenced by <a class="el" href="servers_8cpp-source.html#l00012">serverrec::se
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:02 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:41 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classes.html b/docs/module-doc/classes.html
index f526c4ee6..f92d5aa1f 100644
--- a/docs/module-doc/classes.html
+++ b/docs/module-doc/classes.html
@@ -19,7 +19,7 @@
</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
</td><td><a class="el" href="classuserrec.html">userrec</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classchanrec.html">chanrec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExemptItem.html">ExemptItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInvited.html">Invited</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classpacket.html">packet</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</div></td></tr></table>
</td></tr><tr><td><a class="el" href="classclassbase.html">classbase</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExtMode.html">ExtMode</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInviteItem.html">InviteItem</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classVersion.html">Version</a>&nbsp;&nbsp;&nbsp;</td></tr></table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+</td><td><a class="el" href="classVersion.html">Version</a>&nbsp;&nbsp;&nbsp;</td></tr></table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classpacket-members.html b/docs/module-doc/classpacket-members.html
index 64e4dad9b..9ff0ca95d 100644
--- a/docs/module-doc/classpacket-members.html
+++ b/docs/module-doc/classpacket-members.html
@@ -16,7 +16,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classpacket.html#m2">type</a></td><td><a class="el" href="classpacket.html">packet</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classpacket.html#a1">~packet</a>()</td><td><a class="el" href="classpacket.html">packet</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:08 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:46 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classpacket.html b/docs/module-doc/classpacket.html
index 8adade0c5..e788a94e7 100644
--- a/docs/module-doc/classpacket.html
+++ b/docs/module-doc/classpacket.html
@@ -183,7 +183,7 @@ Definition at line <a class="el" href="connection_8h-source.html#l00031">31</a>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:08 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:46 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classserverrec-members.html b/docs/module-doc/classserverrec-members.html
index acd98df64..9eac24a56 100644
--- a/docs/module-doc/classserverrec-members.html
+++ b/docs/module-doc/classserverrec-members.html
@@ -47,7 +47,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classserverrec.html#m6">version</a></td><td><a class="el" href="classserverrec.html">serverrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classserverrec.html#a2">~serverrec</a>()</td><td><a class="el" href="classserverrec.html">serverrec</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:10 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:48 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classserverrec.html b/docs/module-doc/classserverrec.html
index 6f55fccf7..5aabed8ea 100644
--- a/docs/module-doc/classserverrec.html
+++ b/docs/module-doc/classserverrec.html
@@ -422,7 +422,7 @@ Referenced by <a class="el" href="servers_8cpp-source.html#l00012">serverrec()</
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="servers_8h-source.html">servers.h</a><li><a class="el" href="servers_8cpp-source.html">servers.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:10 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:47 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classucrec-members.html b/docs/module-doc/classucrec-members.html
index 62ad51d08..1c81a6ef1 100644
--- a/docs/module-doc/classucrec-members.html
+++ b/docs/module-doc/classucrec-members.html
@@ -14,7 +14,7 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classucrec.html#a0">ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classucrec.html#a1">~ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:10 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:48 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classucrec.html b/docs/module-doc/classucrec.html
index 3e157059a..3defff9d5 100644
--- a/docs/module-doc/classucrec.html
+++ b/docs/module-doc/classucrec.html
@@ -162,7 +162,7 @@ Definition at line <a class="el" href="channels_8h-source.html#l00197">197</a> o
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:10 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:48 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classuserrec-members.html b/docs/module-doc/classuserrec-members.html
index 5cb021191..b1266c912 100644
--- a/docs/module-doc/classuserrec-members.html
+++ b/docs/module-doc/classuserrec-members.html
@@ -50,10 +50,11 @@
<tr bgcolor="#f0f0f0"><td><a class="el" href="classuserrec.html#m6">server</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classconnection.html#m13">signon</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classconnection.html#a3">TerminateLink</a>(char *targethost)</td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classuserrec.html#m9">timeout</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classuserrec.html#a0">userrec</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classuserrec.html#a1">~userrec</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:11 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classuserrec.html b/docs/module-doc/classuserrec.html
index 82aeba2ba..6bd92e868 100644
--- a/docs/module-doc/classuserrec.html
+++ b/docs/module-doc/classuserrec.html
@@ -18,8 +18,8 @@ Inheritance diagram for userrec:<p><center><img src="classuserrec__inherit__grap
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for userrec:<p><center><img src="classuserrec__coll__graph.gif" border="0" usemap="#userrec__coll__map" alt="Collaboration graph"></center>
<map name="userrec__coll__map">
-<area href="classconnection.html" shape="rect" coords="128,195,197,216" alt="">
-<area href="classucrec.html" shape="rect" coords="316,195,361,216" alt="">
+<area href="classconnection.html" shape="rect" coords="132,195,201,216" alt="">
+<area href="classucrec.html" shape="rect" coords="443,195,488,216" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classuserrec-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
@@ -54,6 +54,7 @@ Inheritance diagram for userrec:<p><center><img src="classuserrec__inherit__grap
<tr><td>&nbsp;</td><td><font size=-1><em>The user's away message.</em> <a href="#m7"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="classuserrec.html#m8">result</a> [256]</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Stores the result of the last GetFullHost or GetRealHost call.</em> <a href="#m8"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="classuserrec.html#m9">timeout</a></td></tr>
<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="users_8h.html#a6">InvitedList</a>&nbsp;</td><td valign=bottom><a class="el" href="classuserrec.html#o0">invites</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>A list of channels the user has a pending invite to.</em> <a href="#o0"></a><em></em></font><br><br></td></tr>
@@ -65,7 +66,7 @@ Everything about a connection is stored here primarily, from the user's socket I
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00058">58</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00066">66</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="userrec::userrec"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
@@ -95,30 +96,31 @@ Definition at line <a class="el" href="users_8h-source.html#l00058">58</a> of fi
<p>
Definition at line <a class="el" href="users_8cpp-source.html#l00011">11</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="connection_8h-source.html#l00047">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00048">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00202">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00092">chans</a>, <a class="el" href="connection_8h-source.html#l00049">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00050">connection::cmds_out</a>, <a class="el" href="connection_8h-source.html#l00043">connection::fd</a>, <a class="el" href="connection_8h-source.html#l00051">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00056">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00064">invites</a>, <a class="el" href="connection_8h-source.html#l00045">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00054">connection::lastping</a>, <a class="el" href="connection_8h-source.html#l00057">connection::nping</a>, <a class="el" href="connection_8h-source.html#l00052">connection::port</a>, <a class="el" href="connection_8h-source.html#l00053">connection::registered</a>, and <a class="el" href="connection_8h-source.html#l00055">connection::signon</a>.
+References <a class="el" href="connection_8h-source.html#l00047">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00048">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00202">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00100">chans</a>, <a class="el" href="connection_8h-source.html#l00049">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00050">connection::cmds_out</a>, <a class="el" href="connection_8h-source.html#l00043">connection::fd</a>, <a class="el" href="connection_8h-source.html#l00051">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00056">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00072">invites</a>, <a class="el" href="connection_8h-source.html#l00045">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00054">connection::lastping</a>, <a class="el" href="connection_8h-source.html#l00057">connection::nping</a>, <a class="el" href="connection_8h-source.html#l00052">connection::port</a>, <a class="el" href="connection_8h-source.html#l00053">connection::registered</a>, <a class="el" href="connection_8h-source.html#l00055">connection::signon</a>, and <a class="el" href="users_8h-source.html#l00116">timeout</a>.
<p>
<div class="fragment"><pre>00012 {
00013 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
00014 strcpy(nick,<span class="stringliteral">""</span>);
00015 <a class="code" href="classconnection.html#m3">ip</a> = 0;
-00016 strcpy(ident,<span class="stringliteral">""</span>);
-00017 strcpy(host,<span class="stringliteral">""</span>);
-00018 strcpy(dhost,<span class="stringliteral">""</span>);
-00019 strcpy(fullname,<span class="stringliteral">""</span>);
-00020 strcpy(modes,<span class="stringliteral">""</span>);
-00021 strcpy(inbuf,<span class="stringliteral">""</span>);
-00022 strcpy(server,<span class="stringliteral">""</span>);
-00023 strcpy(awaymsg,<span class="stringliteral">""</span>);
-00024 <a class="code" href="classconnection.html#m1">fd</a> = <a class="code" href="classconnection.html#m12">lastping</a> = <a class="code" href="classconnection.html#m13">signon</a> = <a class="code" href="classconnection.html#m14">idle_lastmsg</a> = <a class="code" href="classconnection.html#m15">nping</a> = <a class="code" href="classconnection.html#m11">registered</a> = 0;
-00025 <a class="code" href="classconnection.html#m10">port</a> = <a class="code" href="classconnection.html#m5">bytes_in</a> = <a class="code" href="classconnection.html#m6">bytes_out</a> = <a class="code" href="classconnection.html#m7">cmds_in</a> = <a class="code" href="classconnection.html#m8">cmds_out</a> = 0;
-00026 <a class="code" href="classconnection.html#m9">haspassed</a> = <span class="keyword">false</span>;
-00027 strcpy(result,<span class="stringliteral">""</span>);
-00028 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
-00029 {
-00030 <a class="code" href="classuserrec.html#m5">chans</a>[i].<a class="code" href="classucrec.html#m1">channel</a> = NULL;
-00031 }
-00032 <a class="code" href="classuserrec.html#o0">invites</a>.clear();
-00033 }
+00016 <a class="code" href="classuserrec.html#m9">timeout</a> = 0;
+00017 strcpy(ident,<span class="stringliteral">""</span>);
+00018 strcpy(host,<span class="stringliteral">""</span>);
+00019 strcpy(dhost,<span class="stringliteral">""</span>);
+00020 strcpy(fullname,<span class="stringliteral">""</span>);
+00021 strcpy(modes,<span class="stringliteral">""</span>);
+00022 strcpy(inbuf,<span class="stringliteral">""</span>);
+00023 strcpy(server,<span class="stringliteral">""</span>);
+00024 strcpy(awaymsg,<span class="stringliteral">""</span>);
+00025 <a class="code" href="classconnection.html#m1">fd</a> = <a class="code" href="classconnection.html#m12">lastping</a> = <a class="code" href="classconnection.html#m13">signon</a> = <a class="code" href="classconnection.html#m14">idle_lastmsg</a> = <a class="code" href="classconnection.html#m15">nping</a> = <a class="code" href="classconnection.html#m11">registered</a> = 0;
+00026 <a class="code" href="classconnection.html#m10">port</a> = <a class="code" href="classconnection.html#m5">bytes_in</a> = <a class="code" href="classconnection.html#m6">bytes_out</a> = <a class="code" href="classconnection.html#m7">cmds_in</a> = <a class="code" href="classconnection.html#m8">cmds_out</a> = 0;
+00027 <a class="code" href="classconnection.html#m9">haspassed</a> = <span class="keyword">false</span>;
+00028 strcpy(result,<span class="stringliteral">""</span>);
+00029 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
+00030 {
+00031 <a class="code" href="classuserrec.html#m5">chans</a>[i].<a class="code" href="classucrec.html#m1">channel</a> = NULL;
+00032 }
+00033 <a class="code" href="classuserrec.html#o0">invites</a>.clear();
+00034 }
</pre></div> </td>
</tr>
</table>
@@ -149,9 +151,9 @@ References <a class="el" href="connection_8h-source.html#l00047">connection::byt
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00110">110</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00120">120</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-<div class="fragment"><pre>00110 { }
+<div class="fragment"><pre>00120 { }
</pre></div> </td>
</tr>
</table>
@@ -185,14 +187,14 @@ Returns the full displayed host of the user This member function returns the hos
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00036">36</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00037">37</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00106">result</a>.
+References <a class="el" href="users_8h-source.html#l00114">result</a>.
<p>
-<div class="fragment"><pre>00037 {
-00038 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
-00039 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
-00040 }
+<div class="fragment"><pre>00038 {
+00039 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
+00040 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
+00041 }
</pre></div> </td>
</tr>
</table>
@@ -225,14 +227,14 @@ Returns the full real host of the user This member function returns the hostname
<p>
If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00043">43</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00044">44</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00106">result</a>.
+References <a class="el" href="users_8h-source.html#l00114">result</a>.
<p>
-<div class="fragment"><pre>00044 {
-00045 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
-00046 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
-00047 }
+<div class="fragment"><pre>00045 {
+00046 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
+00047 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
+00048 }
</pre></div> </td>
</tr>
</table>
@@ -266,15 +268,15 @@ Adds a channel to a users invite list (invites them to a channel).
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00063">63</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00064">64</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00028">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00064">invites</a>.
+References <a class="el" href="users_8h-source.html#l00028">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00072">invites</a>.
<p>
-<div class="fragment"><pre>00064 {
-00065 <a class="code" href="classInvited.html">Invited</a> i;
-00066 strcpy(i.<a class="code" href="classInvited.html#m0">channel</a>,channel);
-00067 <a class="code" href="classuserrec.html#o0">invites</a>.push_back(i);
-00068 }
+<div class="fragment"><pre>00065 {
+00066 <a class="code" href="classInvited.html">Invited</a> i;
+00067 strcpy(i.<a class="code" href="classInvited.html#m0">channel</a>,channel);
+00068 <a class="code" href="classuserrec.html#o0">invites</a>.push_back(i);
+00069 }
</pre></div> </td>
</tr>
</table>
@@ -308,22 +310,22 @@ Returns true if a user is invited to a channel.
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00049">49</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00050">50</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00064">invites</a>.
+References <a class="el" href="users_8h-source.html#l00072">invites</a>.
<p>
-<div class="fragment"><pre>00050 {
-00051 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
-00052 {
-00053 <span class="keywordflow">if</span> (i-&gt;channel) {
-00054 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-00055 {
-00056 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00057 }
-00058 }
-00059 }
-00060 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00061 }
+<div class="fragment"><pre>00051 {
+00052 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
+00053 {
+00054 <span class="keywordflow">if</span> (i-&gt;channel) {
+00055 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
+00056 {
+00057 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00058 }
+00059 }
+00060 }
+00061 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00062 }
</pre></div> </td>
</tr>
</table>
@@ -357,26 +359,26 @@ Removes a channel from a users invite list.
<p>
This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00070">70</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00064">invites</a>.
-<p>
-<div class="fragment"><pre>00071 {
-00072 log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
-00073 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o0">invites</a>.size())
-00074 {
-00075 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
-00076 {
-00077 <span class="keywordflow">if</span> (i-&gt;channel) {
-00078 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-00079 {
-00080 <a class="code" href="classuserrec.html#o0">invites</a>.erase(i);
-00081 <span class="keywordflow">return</span>;
-00082 }
-00083 }
-00084 }
-00085 }
-00086 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00071">71</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00072">invites</a>.
+<p>
+<div class="fragment"><pre>00072 {
+00073 log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
+00074 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o0">invites</a>.size())
+00075 {
+00076 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
+00077 {
+00078 <span class="keywordflow">if</span> (i-&gt;channel) {
+00079 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
+00080 {
+00081 <a class="code" href="classuserrec.html#o0">invites</a>.erase(i);
+00082 <span class="keywordflow">return</span>;
+00083 }
+00084 }
+00085 }
+00086 }
+00087 }
</pre></div> </td>
</tr>
</table>
@@ -404,7 +406,7 @@ The user's away message.
<p>
If this string is empty, the user is not marked as away.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00101">101</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00109">109</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="m5" doxytag="userrec::chans"></a><p>
@@ -428,7 +430,7 @@ Definition at line <a class="el" href="users_8h-source.html#l00101">101</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00092">92</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00100">100</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
Referenced by <a class="el" href="users_8cpp-source.html#l00011">userrec()</a>. </td>
</tr>
@@ -456,7 +458,7 @@ The host displayed to non-opers (used for cloaking etc).
<p>
This usually matches the value of <a class="el" href="classconnection.html#m2">userrec::host</a>.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00080">80</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00088">88</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="m3" doxytag="userrec::fullname"></a><p>
@@ -482,7 +484,7 @@ The users full name.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00084">84</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00092">92</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="m1" doxytag="userrec::ident"></a><p>
@@ -508,7 +510,7 @@ The users ident reply.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00075">75</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00083">83</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="o0" doxytag="userrec::invites"></a><p>
@@ -534,9 +536,9 @@ A list of channels the user has a pending invite to.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00064">64</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00072">72</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00063">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00049">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00070">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00011">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00064">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00050">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00071">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00011">userrec()</a>. </td>
</tr>
</table>
<a name="m4" doxytag="userrec::modes"></a><p>
@@ -562,7 +564,7 @@ The user's mode string.
<p>
This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00090">90</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00098">98</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="m0" doxytag="userrec::nick"></a><p>
@@ -588,7 +590,7 @@ The users nickname.
<p>
An invalid nickname indicates an unregistered connection prior to the NICK command.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00071">71</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00079">79</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="m8" doxytag="userrec::result"></a><p>
@@ -614,9 +616,9 @@ Stores the result of the last GetFullHost or GetRealHost call.
<p>
You may use this to increase the speed of use of this class.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00106">106</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00114">114</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00043">GetFullRealHost()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00037">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00044">GetFullRealHost()</a>. </td>
</tr>
</table>
<a name="m6" doxytag="userrec::server"></a><p>
@@ -642,12 +644,38 @@ The server the user is connected to.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00096">96</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00104">104</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+ </tr>
+</table>
+<a name="m9" doxytag="userrec::timeout"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> unsigned long userrec::timeout
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8h-source.html#l00116">116</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00011">userrec()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:11 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/classuserrec__coll__graph.gif b/docs/module-doc/classuserrec__coll__graph.gif
index 27ce7c656..ffaa44f64 100644
--- a/docs/module-doc/classuserrec__coll__graph.gif
+++ b/docs/module-doc/classuserrec__coll__graph.gif
Binary files differ
diff --git a/docs/module-doc/connection_8h-source.html b/docs/module-doc/connection_8h-source.html
index 5dda8bbe6..ebe235157 100644
--- a/docs/module-doc/connection_8h-source.html
+++ b/docs/module-doc/connection_8h-source.html
@@ -79,7 +79,7 @@
00071
00072 <span class="preprocessor">#endif</span>
00073 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/connection_8h.html b/docs/module-doc/connection_8h.html
index ae9cfba12..0d39c21ee 100644
--- a/docs/module-doc/connection_8h.html
+++ b/docs/module-doc/connection_8h.html
@@ -142,7 +142,7 @@ Definition at line <a class="el" href="connection_8h-source.html#l00020">20</a>
Definition at line <a class="el" href="connection_8h-source.html#l00022">22</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:54 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:33 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/ctables_8h-source.html b/docs/module-doc/ctables_8h-source.html
index 38e9d3d60..d0846dfa9 100644
--- a/docs/module-doc/ctables_8h-source.html
+++ b/docs/module-doc/ctables_8h-source.html
@@ -43,7 +43,7 @@
00049
00050 <span class="preprocessor">#endif</span>
00051 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/ctables_8h.html b/docs/module-doc/ctables_8h.html
index 9a6f42f90..69b77f09a 100644
--- a/docs/module-doc/ctables_8h.html
+++ b/docs/module-doc/ctables_8h.html
@@ -57,7 +57,7 @@ This graph shows which files directly or indirectly include this file:<p><center
Definition at line <a class="el" href="ctables_8h-source.html#l00023">23</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:55 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:33 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/files.html b/docs/module-doc/files.html
index 3b1dedd86..62827d670 100644
--- a/docs/module-doc/files.html
+++ b/docs/module-doc/files.html
@@ -19,7 +19,7 @@
<tr><td class="indexkey"><a class="el" href="users_8cpp.html">users.cpp</a> <a href="users_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="users_8h.html">users.h</a> <a href="users_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/functions.html b/docs/module-doc/functions.html
index 66d7e95b6..b6afd0e46 100644
--- a/docs/module-doc/functions.html
+++ b/docs/module-doc/functions.html
@@ -7,7 +7,7 @@
<center>
<a class="qindex" href="main.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>InspIRCd Compound Members</h1><center>
-<a href="#index_a">a</a>&nbsp;|&nbsp;<a href="#index_b">b</a>&nbsp;|&nbsp;<a href="#index_c">c</a>&nbsp;|&nbsp;<a href="#index_d">d</a>&nbsp;|&nbsp;<a href="#index_e">e</a>&nbsp;|&nbsp;<a href="#index_f">f</a>&nbsp;|&nbsp;<a href="#index_g">g</a>&nbsp;|&nbsp;<a href="#index_h">h</a>&nbsp;|&nbsp;<a href="#index_i">i</a>&nbsp;|&nbsp;<a href="#index_j">j</a>&nbsp;|&nbsp;<a href="#index_k">k</a>&nbsp;|&nbsp;<a href="#index_l">l</a>&nbsp;|&nbsp;<a href="#index_m">m</a>&nbsp;|&nbsp;<a href="#index_n">n</a>&nbsp;|&nbsp;<a href="#index_o">o</a>&nbsp;|&nbsp;<a href="#index_p">p</a>&nbsp;|&nbsp;<a href="#index_r">r</a>&nbsp;|&nbsp;<a href="#index_s">s</a>&nbsp;|&nbsp;<a href="#index_t">t</a>&nbsp;|&nbsp;<a href="#index_u">u</a>&nbsp;|&nbsp;<a href="#index_v">v</a>&nbsp;|&nbsp;<a href="#index_~">~</a></center>
+<a href="#index_a">a</a>&nbsp;|&nbsp;<a href="#index_b">b</a>&nbsp;|&nbsp;<a href="#index_c">c</a>&nbsp;|&nbsp;<a href="#index_d">d</a>&nbsp;|&nbsp;<a href="#index_e">e</a>&nbsp;|&nbsp;<a href="#index_f">f</a>&nbsp;|&nbsp;<a href="#index_g">g</a>&nbsp;|&nbsp;<a href="#index_h">h</a>&nbsp;|&nbsp;<a href="#index_i">i</a>&nbsp;|&nbsp;<a href="#index_j">j</a>&nbsp;|&nbsp;<a href="#index_k">k</a>&nbsp;|&nbsp;<a href="#index_l">l</a>&nbsp;|&nbsp;<a href="#index_m">m</a>&nbsp;|&nbsp;<a href="#index_n">n</a>&nbsp;|&nbsp;<a href="#index_o">o</a>&nbsp;|&nbsp;<a href="#index_p">p</a>&nbsp;|&nbsp;<a href="#index_q">q</a>&nbsp;|&nbsp;<a href="#index_r">r</a>&nbsp;|&nbsp;<a href="#index_s">s</a>&nbsp;|&nbsp;<a href="#index_t">t</a>&nbsp;|&nbsp;<a href="#index_u">u</a>&nbsp;|&nbsp;<a href="#index_v">v</a>&nbsp;|&nbsp;<a href="#index_~">~</a></center>
<p>
Here is a list of all class members with links to the classes they belong to:<h3><a name="index_a">- a -</a>
@@ -29,7 +29,8 @@ Here is a list of all class members with links to the classes they belong to:<h3
<h3><a name="index_c">- c -</a>
</h3><ul>
<li>c_private
-: <a class="el" href="classchanrec.html#m13">chanrec</a><li>ChanMode()
+: <a class="el" href="classchanrec.html#m13">chanrec</a><li>ChangeUserNick()
+: <a class="el" href="classServer.html#a25">Server</a><li>ChanMode()
: <a class="el" href="classServer.html#a15">Server</a><li>channel
: <a class="el" href="classInvited.html#m0">Invited</a>, <a class="el" href="classucrec.html#m1">ucrec</a>, <a class="el" href="classModeParameter.html#m2">ModeParameter</a><li>chanrec()
: <a class="el" href="classchanrec.html#a4">chanrec</a><li>chans
@@ -39,7 +40,8 @@ Here is a list of all class members with links to the classes they belong to:<h3
: <a class="el" href="classconnection.html#m8">connection</a><li>command
: <a class="el" href="classcommand__t.html#m0">command_t</a><li>CommonChannels()
: <a class="el" href="classServer.html#a9">Server</a><li>ConfigReader()
-: <a class="el" href="classConfigReader.html#a1">ConfigReader</a><li>connection()
+: <a class="el" href="classConfigReader.html#a1">ConfigReader</a><li>ConnectClass()
+: <a class="el" href="classConnectClass.html#a0">ConnectClass</a><li>connection()
: <a class="el" href="classconnection.html#a0">connection</a><li>created
: <a class="el" href="classchanrec.html#m3">chanrec</a><li>CreateListener()
: <a class="el" href="classconnection.html#a1">connection</a><li>CreateModule()
@@ -87,7 +89,7 @@ Here is a list of all class members with links to the classes they belong to:<h3
: <a class="el" href="classcommand__t.html#m1">command_t</a><li>haspassed
: <a class="el" href="classconnection.html#m9">connection</a><li>hops_away
: <a class="el" href="classserverrec.html#m5">serverrec</a><li>host
-: <a class="el" href="classConnectClass.html#m1">ConnectClass</a>, <a class="el" href="classconnection.html#m2">connection</a><li>HostItem()
+: <a class="el" href="classConnectClass.html#m2">ConnectClass</a>, <a class="el" href="classconnection.html#m2">connection</a><li>HostItem()
: <a class="el" href="classHostItem.html#a0">HostItem</a></ul>
<h3><a name="index_i">- i -</a>
</h3><ul>
@@ -129,8 +131,8 @@ Here is a list of all class members with links to the classes they belong to:<h3
: <a class="el" href="classExtMode.html#m0">ExtMode</a><li>moderated
: <a class="el" href="classchanrec.html#m11">chanrec</a><li>modes
: <a class="el" href="classuserrec.html#m4">userrec</a><li>Module()
-: <a class="el" href="classModule.html#a0">Module</a><li>Module::OnUserPreJoin()
-: <a class="el" href="classModule.html#a12">Module</a><li>ModuleFactory()
+: <a class="el" href="classModule.html#a0">Module</a><li>Module::OnWhois()
+: <a class="el" href="classModule.html#a15">Module</a><li>ModuleFactory()
: <a class="el" href="classModuleFactory.html#a0">ModuleFactory</a></ul>
<h3><a name="index_n">- n -</a>
</h3><ul>
@@ -145,14 +147,17 @@ Here is a list of all class members with links to the classes they belong to:<h3
<h3><a name="index_o">- o -</a>
</h3><ul>
<li>OnExtendedMode()
-: <a class="el" href="classModule.html#a11">Module</a><li>OnPacketReceive()
+: <a class="el" href="classModule.html#a11">Module</a><li>OnInfo()
+: <a class="el" href="classModule.html#a14">Module</a><li>OnOper()
+: <a class="el" href="classModule.html#a13">Module</a><li>OnPacketReceive()
: <a class="el" href="classModule.html#a8">Module</a><li>OnPacketTransmit()
: <a class="el" href="classModule.html#a7">Module</a><li>OnRehash()
: <a class="el" href="classModule.html#a9">Module</a><li>OnServerRaw()
: <a class="el" href="classModule.html#a10">Module</a><li>OnUserConnect()
: <a class="el" href="classModule.html#a3">Module</a><li>OnUserJoin()
: <a class="el" href="classModule.html#a5">Module</a><li>OnUserPart()
-: <a class="el" href="classModule.html#a6">Module</a><li>OnUserQuit()
+: <a class="el" href="classModule.html#a6">Module</a><li>OnUserPreJoin()
+: <a class="el" href="classModule.html#a12">Module</a><li>OnUserQuit()
: <a class="el" href="classModule.html#a4">Module</a><li>opercount
: <a class="el" href="classserverrec.html#m4">serverrec</a></ul>
<h3><a name="index_p">- p -</a>
@@ -162,15 +167,20 @@ Here is a list of all class members with links to the classes they belong to:<h3
: <a class="el" href="classModeParameter.html#m1">ModeParameter</a><li>params_when_off
: <a class="el" href="classExtMode.html#m3">ExtMode</a><li>params_when_on
: <a class="el" href="classExtMode.html#m2">ExtMode</a><li>pass
-: <a class="el" href="classConnectClass.html#m2">ConnectClass</a><li>pingtime
+: <a class="el" href="classConnectClass.html#m3">ConnectClass</a><li>pingtime
: <a class="el" href="classserverrec.html#m1">serverrec</a><li>port
: <a class="el" href="classconnection.html#m10">connection</a></ul>
+<h3><a name="index_q">- q -</a>
+</h3><ul>
+<li>QuitUser()
+: <a class="el" href="classServer.html#a26">Server</a></ul>
<h3><a name="index_r">- r -</a>
</h3><ul>
<li>ReadValue()
: <a class="el" href="classConfigReader.html#a3">ConfigReader</a><li>RecvPacket()
: <a class="el" href="classconnection.html#a5">connection</a><li>registered
-: <a class="el" href="classconnection.html#m11">connection</a><li>RemoveInvite()
+: <a class="el" href="classconnection.html#m11">connection</a><li>registration_timeout
+: <a class="el" href="classConnectClass.html#m1">ConnectClass</a><li>RemoveInvite()
: <a class="el" href="classuserrec.html#a6">userrec</a><li>result
: <a class="el" href="classuserrec.html#m8">userrec</a><li>Revision
: <a class="el" href="classVersion.html#m2">Version</a></ul>
@@ -188,10 +198,13 @@ Here is a list of all class members with links to the classes they belong to:<h3
: <a class="el" href="classconnection.html#a4">connection</a><li>SendServ()
: <a class="el" href="classServer.html#a5">Server</a><li>SendSYN()
: <a class="el" href="classconnection.html#a6">connection</a><li>SendTo()
-: <a class="el" href="classServer.html#a7">Server</a><li>SendWallops()
+: <a class="el" href="classServer.html#a7">Server</a><li>SendToModeMask()
+: <a class="el" href="classServer.html#a22">Server</a><li>SendWallops()
: <a class="el" href="classServer.html#a11">Server</a><li>server
: <a class="el" href="classuserrec.html#m6">userrec</a><li>Server()
-: <a class="el" href="classServer.html#a0">Server</a><li>serverrec()
+: <a class="el" href="classServer.html#a0">Server</a><li>Server::JoinUserToChannel()
+: <a class="el" href="classServer.html#a23">Server</a><li>Server::PartUserFromChannel()
+: <a class="el" href="classServer.html#a24">Server</a><li>serverrec()
: <a class="el" href="classserverrec.html#a1">serverrec</a><li>set_by
: <a class="el" href="classHostItem.html#m1">HostItem</a><li>set_time
: <a class="el" href="classHostItem.html#m0">HostItem</a><li>setby
@@ -202,7 +215,8 @@ Here is a list of all class members with links to the classes they belong to:<h3
<h3><a name="index_t">- t -</a>
</h3><ul>
<li>TerminateLink()
-: <a class="el" href="classconnection.html#a3">connection</a><li>topic
+: <a class="el" href="classconnection.html#a3">connection</a><li>timeout
+: <a class="el" href="classuserrec.html#m9">userrec</a><li>topic
: <a class="el" href="classchanrec.html#m2">chanrec</a><li>topiclock
: <a class="el" href="classchanrec.html#m8">chanrec</a><li>topicset
: <a class="el" href="classchanrec.html#m4">chanrec</a><li>total_bytes
@@ -238,7 +252,7 @@ Here is a list of all class members with links to the classes they belong to:<h3
: <a class="el" href="classserverrec.html#a2">serverrec</a><li>~ucrec()
: <a class="el" href="classucrec.html#a1">ucrec</a><li>~userrec()
: <a class="el" href="classuserrec.html#a1">userrec</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/globals.html b/docs/module-doc/globals.html
index 4aba8c1c0..56126f315 100644
--- a/docs/module-doc/globals.html
+++ b/docs/module-doc/globals.html
@@ -102,7 +102,7 @@ Here is a list of all file members with links to the files they belong to:<h3><a
</h3><ul>
<li>VERBOSE
: <a class="el" href="modules_8h.html#a1">modules.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:12 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/graph_legend.html b/docs/module-doc/graph_legend.html
index a3fa43e96..aa9541490 100644
--- a/docs/module-doc/graph_legend.html
+++ b/docs/module-doc/graph_legend.html
@@ -69,7 +69,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:12 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:50 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/hierarchy.html b/docs/module-doc/hierarchy.html
index 00b0cbbd4..0319f3fa1 100644
--- a/docs/module-doc/hierarchy.html
+++ b/docs/module-doc/hierarchy.html
@@ -39,7 +39,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
</ul>
<li><a class="el" href="classExtMode.html">ExtMode</a>
</ul>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/inherits.html b/docs/module-doc/inherits.html
index 1b5224e7e..42cbdf226 100644
--- a/docs/module-doc/inherits.html
+++ b/docs/module-doc/inherits.html
@@ -39,7 +39,7 @@
<area href="classExtMode.html" shape="rect" coords="19,5,77,26" alt="">
</map></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:13 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:50 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/main.html b/docs/module-doc/main.html
index df26dabdf..4ace16909 100644
--- a/docs/module-doc/main.html
+++ b/docs/module-doc/main.html
@@ -8,7 +8,7 @@
<a class="qindex" href="main.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>InspIRCd Documentation</h1>
<p>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html
index ad3bb6282..81e149e10 100644
--- a/docs/module-doc/modules_8cpp-source.html
+++ b/docs/module-doc/modules_8cpp-source.html
@@ -122,242 +122,271 @@
<a name="l00114"></a><a class="code" href="classModule.html#a8">00114</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketReceive</a>(<span class="keywordtype">char</span> *p) { }
<a name="l00115"></a><a class="code" href="classModule.html#a9">00115</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnRehash</a>() { }
<a name="l00116"></a><a class="code" href="classModule.html#a10">00116</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnServerRaw</a>(std::string &amp;raw, <span class="keywordtype">bool</span> inbound) { }
-00117 <span class="keywordtype">int</span> Module::OnUserPreJoin(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; }
+<a name="l00117"></a><a class="code" href="classModule.html#a12">00117</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="l00118"></a><a class="code" href="classModule.html#a11">00118</a> <span class="keywordtype">bool</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) { }
<a name="l00119"></a><a class="code" href="classModule.html#a2">00119</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); }
-00120
-00121 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
-00122 <span class="comment">// exports in the core</span>
-00123 <span class="comment">//</span>
-00124
-<a name="l00125"></a><a class="code" href="classServer.html#a0">00125</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
-00126 {
-00127 }
-00128
-<a name="l00129"></a><a class="code" href="classServer.html#a1">00129</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
-00130 {
-00131 }
-00132
-<a name="l00133"></a><a class="code" href="classServer.html#a2">00133</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
-00134 {
-00135 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
-00136 }
-00137
-<a name="l00138"></a><a class="code" href="classServer.html#a3">00138</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)
-00139 {
-00140 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
-00141 }
-00142
-<a name="l00143"></a><a class="code" href="classServer.html#a20">00143</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a20">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams)
-00144 {
-00145 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
-00146 }
-00147
-<a name="l00148"></a><a class="code" href="classServer.html#a21">00148</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
-00149 {
-00150 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
-00151 }
-00152
-<a name="l00153"></a><a class="code" href="classServer.html#a4">00153</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)
-00154 {
-00155 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00156 }
-00157
-<a name="l00158"></a><a class="code" href="classServer.html#a5">00158</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)
-00159 {
-00160 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00161 }
-00162
-<a name="l00163"></a><a class="code" href="classServer.html#a6">00163</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)
-00164 {
-00165 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00166 }
-00167
-<a name="l00168"></a><a class="code" href="classServer.html#a7">00168</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)
-00169 {
-00170 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-00171 }
-00172
-<a name="l00173"></a><a class="code" href="classServer.html#a8">00173</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)
-00174 {
-00175 <span class="keywordflow">if</span> (IncludeSender)
-00176 {
-00177 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00178 }
-00179 <span class="keywordflow">else</span>
-00180 {
-00181 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00182 }
-00183 }
-00184
-<a name="l00185"></a><a class="code" href="classServer.html#a9">00185</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)
-00186 {
-00187 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
-00188 }
-00189
-<a name="l00190"></a><a class="code" href="classServer.html#a10">00190</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)
-00191 {
-00192 <span class="keywordflow">if</span> (IncludeSender)
-00193 {
-00194 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00195 }
-00196 <span class="keywordflow">else</span>
-00197 {
-00198 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00199 }
+<a name="l00120"></a><a class="code" href="classModule.html#a13">00120</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="l00121"></a><a class="code" href="classModule.html#a14">00121</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) { };
+00122 <span class="keywordtype">void</span> Module::OnWhois(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
+00123
+00124 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
+00125 <span class="comment">// exports in the core</span>
+00126 <span class="comment">//</span>
+00127
+<a name="l00128"></a><a class="code" href="classServer.html#a0">00128</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
+00129 {
+00130 }
+00131
+<a name="l00132"></a><a class="code" href="classServer.html#a1">00132</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
+00133 {
+00134 }
+00135
+<a name="l00136"></a><a class="code" href="classServer.html#a2">00136</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
+00137 {
+00138 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+00139 }
+00140
+<a name="l00141"></a><a class="code" href="classServer.html#a22">00141</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a22">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
+00142 {
+00143 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00144 }
+00145
+00146 <a class="code" href="classchanrec.html">chanrec</a>* Server::JoinUserToChannel(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
+00147 {
+00148 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str());
+00149 }
+00150
+00151 <a class="code" href="classchanrec.html">chanrec</a>* Server::PartUserFromChannel(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
+00152 {
+00153 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str());
+00154 }
+00155
+<a name="l00156"></a><a class="code" href="classServer.html#a25">00156</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
+00157 {
+00158 force_nickchange(user,nickname.c_str());
+00159 }
+00160
+<a name="l00161"></a><a class="code" href="classServer.html#a26">00161</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+00162 {
+00163 kill_link(user,reason.c_str());
+00164 }
+00165
+00166
+<a name="l00167"></a><a class="code" href="classServer.html#a3">00167</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)
+00168 {
+00169 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00170 }
+00171
+<a name="l00172"></a><a class="code" href="classServer.html#a20">00172</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a20">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams)
+00173 {
+00174 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
+00175 }
+00176
+<a name="l00177"></a><a class="code" href="classServer.html#a21">00177</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
+00178 {
+00179 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
+00180 }
+00181
+<a name="l00182"></a><a class="code" href="classServer.html#a4">00182</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)
+00183 {
+00184 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00185 }
+00186
+<a name="l00187"></a><a class="code" href="classServer.html#a5">00187</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)
+00188 {
+00189 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00190 }
+00191
+<a name="l00192"></a><a class="code" href="classServer.html#a6">00192</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)
+00193 {
+00194 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00195 }
+00196
+<a name="l00197"></a><a class="code" href="classServer.html#a7">00197</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)
+00198 {
+00199 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
00200 }
00201
-<a name="l00202"></a><a class="code" href="classServer.html#a11">00202</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)
+<a name="l00202"></a><a class="code" href="classServer.html#a8">00202</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)
00203 {
-00204 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00205 }
-00206
-<a name="l00207"></a><a class="code" href="classServer.html#a12">00207</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick)
-00208 {
-00209 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
-00210 }
-00211
-<a name="l00212"></a><a class="code" href="classServer.html#a13">00212</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a13">Server::FindNick</a>(std::string nick)
-00213 {
-00214 <span class="keywordflow">return</span> Find(nick);
-00215 }
-00216
-<a name="l00217"></a><a class="code" href="classServer.html#a14">00217</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a14">Server::FindChannel</a>(std::string channel)
-00218 {
-00219 <span class="keywordflow">return</span> FindChan(channel.c_str());
-00220 }
-00221
-<a name="l00222"></a><a class="code" href="classServer.html#a15">00222</a> std::string <a class="code" href="classServer.html#a15">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-00223 {
-00224 <span class="keywordflow">return</span> cmode(User,Chan);
-00225 }
-00226
-<a name="l00227"></a><a class="code" href="classServer.html#a16">00227</a> std::string <a class="code" href="classServer.html#a16">Server::GetServerName</a>()
-00228 {
-00229 <span class="keywordflow">return</span> getservername();
-00230 }
-00231
-<a name="l00232"></a><a class="code" href="classServer.html#a17">00232</a> std::string <a class="code" href="classServer.html#a17">Server::GetNetworkName</a>()
-00233 {
-00234 <span class="keywordflow">return</span> getnetworkname();
-00235 }
-00236
-<a name="l00237"></a><a class="code" href="classServer.html#a18">00237</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a18">Server::GetAdmin</a>()
-00238 {
-00239 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
-00240 }
-00241
-00242
-00243
-<a name="l00244"></a><a class="code" href="classServer.html#a19">00244</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">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)
-00245 {
-00246 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00247 {
-00248 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00249 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00250 }
-00251 <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>))
-00252 {
-00253 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-00254 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00255 }
-00256 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
-00257 {
-00258 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-00259 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00260 }
-00261 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00262 }
-00263
-00264
-<a name="l00265"></a><a class="code" href="classConfigReader.html#a0">00265</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
-00266 {
-00267 <a class="code" href="classConfigReader.html#n0">fname</a> = CONFIG_FILE;
-00268 }
-00269
+00204 <span class="keywordflow">if</span> (IncludeSender)
+00205 {
+00206 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00207 }
+00208 <span class="keywordflow">else</span>
+00209 {
+00210 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00211 }
+00212 }
+00213
+<a name="l00214"></a><a class="code" href="classServer.html#a9">00214</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)
+00215 {
+00216 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
+00217 }
+00218
+<a name="l00219"></a><a class="code" href="classServer.html#a10">00219</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)
+00220 {
+00221 <span class="keywordflow">if</span> (IncludeSender)
+00222 {
+00223 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00224 }
+00225 <span class="keywordflow">else</span>
+00226 {
+00227 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00228 }
+00229 }
+00230
+<a name="l00231"></a><a class="code" href="classServer.html#a11">00231</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)
+00232 {
+00233 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00234 }
+00235
+<a name="l00236"></a><a class="code" href="classServer.html#a12">00236</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick)
+00237 {
+00238 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
+00239 }
+00240
+<a name="l00241"></a><a class="code" href="classServer.html#a13">00241</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a13">Server::FindNick</a>(std::string nick)
+00242 {
+00243 <span class="keywordflow">return</span> Find(nick);
+00244 }
+00245
+<a name="l00246"></a><a class="code" href="classServer.html#a14">00246</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a14">Server::FindChannel</a>(std::string channel)
+00247 {
+00248 <span class="keywordflow">return</span> FindChan(channel.c_str());
+00249 }
+00250
+<a name="l00251"></a><a class="code" href="classServer.html#a15">00251</a> std::string <a class="code" href="classServer.html#a15">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+00252 {
+00253 <span class="keywordflow">return</span> cmode(User,Chan);
+00254 }
+00255
+<a name="l00256"></a><a class="code" href="classServer.html#a16">00256</a> std::string <a class="code" href="classServer.html#a16">Server::GetServerName</a>()
+00257 {
+00258 <span class="keywordflow">return</span> getservername();
+00259 }
+00260
+<a name="l00261"></a><a class="code" href="classServer.html#a17">00261</a> std::string <a class="code" href="classServer.html#a17">Server::GetNetworkName</a>()
+00262 {
+00263 <span class="keywordflow">return</span> getnetworkname();
+00264 }
+00265
+<a name="l00266"></a><a class="code" href="classServer.html#a18">00266</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a18">Server::GetAdmin</a>()
+00267 {
+00268 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00269 }
00270
-<a name="l00271"></a><a class="code" href="classConfigReader.html#a2">00271</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
-00272 {
-00273 }
-00274
-00275
-<a name="l00276"></a><a class="code" href="classConfigReader.html#a1">00276</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) : fname(filename) { };
-00277
-<a name="l00278"></a><a class="code" href="classConfigReader.html#a3">00278</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)
-00279 {
-00280 <span class="keywordtype">char</span> val[MAXBUF];
-00281 ReadConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str(),name.c_str(),index,val);
-00282 <span class="keywordflow">return</span> val;
-00283 }
-00284
-00285
-<a name="l00286"></a><a class="code" href="classConfigReader.html#a4">00286</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::Enumerate</a>(std::string tag)
-00287 {
-00288 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str());
-00289 }
-00290
-00291
-<a name="l00292"></a><a class="code" href="classConfigReader.html#a5">00292</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::Verify</a>()
-00293 {
-00294 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00295 }
-00296
-00297
-<a name="l00298"></a><a class="code" href="classFileReader.html#a1">00298</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
-00299 {
-00300 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00301 readfile(c,filename.c_str());
-00302 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
-00303 }
+00271
+00272
+<a name="l00273"></a><a class="code" href="classServer.html#a19">00273</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">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)
+00274 {
+00275 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
+00276 {
+00277 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+00278 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00279 }
+00280 <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>))
+00281 {
+00282 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00283 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00284 }
+00285 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+00286 {
+00287 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00288 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00289 }
+00290 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00291 }
+00292
+00293
+<a name="l00294"></a><a class="code" href="classConfigReader.html#a0">00294</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
+00295 {
+00296 <a class="code" href="classConfigReader.html#n0">fname</a> = CONFIG_FILE;
+00297 }
+00298
+00299
+<a name="l00300"></a><a class="code" href="classConfigReader.html#a2">00300</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
+00301 {
+00302 }
+00303
00304
-<a name="l00305"></a><a class="code" href="classFileReader.html#a0">00305</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
-00306 {
-00307 }
-00308
-<a name="l00309"></a><a class="code" href="classFileReader.html#a3">00309</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
-00310 {
-00311 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00312 readfile(c,filename.c_str());
-00313 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
-00314 }
-00315
-00316
-<a name="l00317"></a><a class="code" href="classFileReader.html#a2">00317</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
-00318 {
-00319 }
+<a name="l00305"></a><a class="code" href="classConfigReader.html#a1">00305</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) : fname(filename) { };
+00306
+<a name="l00307"></a><a class="code" href="classConfigReader.html#a3">00307</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)
+00308 {
+00309 <span class="keywordtype">char</span> val[MAXBUF];
+00310 ReadConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str(),name.c_str(),index,val);
+00311 <span class="keywordflow">return</span> val;
+00312 }
+00313
+00314
+<a name="l00315"></a><a class="code" href="classConfigReader.html#a4">00315</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::Enumerate</a>(std::string tag)
+00316 {
+00317 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str());
+00318 }
+00319
00320
-<a name="l00321"></a><a class="code" href="classFileReader.html#a4">00321</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
+<a name="l00321"></a><a class="code" href="classConfigReader.html#a5">00321</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::Verify</a>()
00322 {
-00323 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
-00324 {
-00325 <span class="keywordflow">return</span>(false);
-00326 }
-00327 <span class="keywordflow">else</span>
-00328 {
-00329 <span class="keywordflow">return</span>(true);
-00330 }
-00331 }
-00332
-<a name="l00333"></a><a class="code" href="classFileReader.html#a5">00333</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
-00334 {
-00335 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#o0">fc</a>.size()))
-00336 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00337 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
-00338 }
-00339
-<a name="l00340"></a><a class="code" href="classFileReader.html#a6">00340</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
-00341 {
-00342 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
+00323 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00324 }
+00325
+00326
+<a name="l00327"></a><a class="code" href="classFileReader.html#a1">00327</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
+00328 {
+00329 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00330 readfile(c,filename.c_str());
+00331 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
+00332 }
+00333
+<a name="l00334"></a><a class="code" href="classFileReader.html#a0">00334</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
+00335 {
+00336 }
+00337
+<a name="l00338"></a><a class="code" href="classFileReader.html#a3">00338</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
+00339 {
+00340 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00341 readfile(c,filename.c_str());
+00342 this-&gt;<a class="code" href="classFileReader.html#o0">fc</a> = c;
00343 }
00344
00345
-00346 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a9">modules</a>(255);
-00347 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a10">factory</a>(255);
-00348
-<a name="l00349"></a><a class="code" href="modules_8cpp.html#a3">00349</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a3">MODCOUNT</a> = -1;
-00350
-00351
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:51 2004 for InspIRCd by
+<a name="l00346"></a><a class="code" href="classFileReader.html#a2">00346</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
+00347 {
+00348 }
+00349
+<a name="l00350"></a><a class="code" href="classFileReader.html#a4">00350</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
+00351 {
+00352 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
+00353 {
+00354 <span class="keywordflow">return</span>(false);
+00355 }
+00356 <span class="keywordflow">else</span>
+00357 {
+00358 <span class="keywordflow">return</span>(true);
+00359 }
+00360 }
+00361
+<a name="l00362"></a><a class="code" href="classFileReader.html#a5">00362</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
+00363 {
+00364 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#o0">fc</a>.size()))
+00365 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00366 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
+00367 }
+00368
+<a name="l00369"></a><a class="code" href="classFileReader.html#a6">00369</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
+00370 {
+00371 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
+00372 }
+00373
+00374
+00375 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a9">modules</a>(255);
+00376 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a10">factory</a>(255);
+00377
+<a name="l00378"></a><a class="code" href="modules_8cpp.html#a3">00378</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a3">MODCOUNT</a> = -1;
+00379
+00380
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/modules_8cpp.html b/docs/module-doc/modules_8cpp.html
index f8e421f99..a62fbeda0 100644
--- a/docs/module-doc/modules_8cpp.html
+++ b/docs/module-doc/modules_8cpp.html
@@ -152,7 +152,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00089">89</a> o
<p>
References <a class="el" href="modules_8cpp-source.html#l00031">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00034">ModeDefined()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00244">Server::AddExtendedMode()</a>.
+Referenced by <a class="el" href="modules_8cpp-source.html#l00273">Server::AddExtendedMode()</a>.
<p>
<div class="fragment"><pre>00090 {
00091 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(modechar,type)) {
@@ -492,10 +492,10 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00089">DoAddExtended
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00349">349</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00378">378</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:55 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:34 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/modules_8h-source.html b/docs/module-doc/modules_8h-source.html
index 81ca53cdb..44f988d0f 100644
--- a/docs/module-doc/modules_8h-source.html
+++ b/docs/module-doc/modules_8h-source.html
@@ -107,84 +107,100 @@
00163
00173 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a11">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);
00174
-00187 <span class="keyword">virtual</span> <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="keywordtype">char</span>* cname);
-00188
-00189 };
-00190
-00191
-<a name="l00197"></a><a class="code" href="classServer.html">00197</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00198 {
-00199 <span class="keyword">public</span>:
-00203 <a class="code" href="classServer.html#a0">Server</a>();
-00207 <span class="keyword">virtual</span> <a class="code" href="classServer.html#a1">~Server</a>();
-00208
-00212 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">SendOpers</a>(std::string s);
-00217 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Log</a>(<span class="keywordtype">int</span> level, std::string s);
-00222 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Send</a>(<span class="keywordtype">int</span> Socket, std::string s);
-00227 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s);
-00232 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s);
-00237 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s);
-00244 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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);
-00249 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
-00257 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender);
-00262 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text);
-00263
-00267 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">IsNick</a>(std::string nick);
-00271 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a13">FindNick</a>(std::string nick);
-00275 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a14">FindChannel</a>(std::string channel);
-00280 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a15">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
-00283 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a16">GetServerName</a>();
-00286 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a17">GetNetworkName</a>();
-00292 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a18">GetAdmin</a>();
-00311 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">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);
-00312
-00327 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a20">AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams);
-00328
-00350 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-00351 };
-00352
-<a name="l00359"></a><a class="code" href="classConfigReader.html">00359</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00360 {
-00361 <span class="keyword">protected</span>:
-<a name="l00364"></a><a class="code" href="classConfigReader.html#n0">00364</a> std::string <a class="code" href="classConfigReader.html#n0">fname</a>;
-00365 <span class="keyword">public</span>:
-00370 <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
-00374 <span class="comment"></span> <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(std::string filename); <span class="comment">// read a module-specific config</span>
-00378 <span class="comment"></span> <a class="code" href="classConfigReader.html#a2">~ConfigReader</a>();
-00383 std::string <a class="code" href="classConfigReader.html#a3">ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index);
-00390 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">Enumerate</a>(std::string tag);
-00394 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">Verify</a>();
-00395 };
-00396
-00397
-00398
-<a name="l00404"></a><a class="code" href="classFileReader.html">00404</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00405 {
-<a name="l00406"></a><a class="code" href="classFileReader.html#o0">00406</a> <a class="code" href="modules_8h.html#a10">file_cache</a> <a class="code" href="classFileReader.html#o0">fc</a>;
-00407 <span class="keyword">public</span>:
-00412 <a class="code" href="classFileReader.html#a0">FileReader</a>();
-00418 <a class="code" href="classFileReader.html#a0">FileReader</a>(std::string filename);
-00422 <a class="code" href="classFileReader.html#a2">~FileReader</a>();
-00428 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">LoadFile</a>(std::string filename);
-00433 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">Exists</a>();
-00434 std::string <a class="code" href="classFileReader.html#a5">GetLine</a>(<span class="keywordtype">int</span> x);
-00440 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileSize</a>();
-00441 };
-00442
-00443
-<a name="l00450"></a><a class="code" href="classModuleFactory.html">00450</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00451 {
-00452 <span class="keyword">public</span>:
-<a name="l00453"></a><a class="code" href="classModuleFactory.html#a0">00453</a> <a class="code" href="classModuleFactory.html#a0">ModuleFactory</a>() { }
-<a name="l00454"></a><a class="code" href="classModuleFactory.html#a1">00454</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#a1">~ModuleFactory</a>() { }
-00459 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#a2">CreateModule</a>() = 0;
-00460 };
-00461
-00462
-<a name="l00463"></a><a class="code" href="modules_8h.html#a12">00463</a> <span class="keyword">typedef</span> DLLFactory&lt;ModuleFactory&gt; <a class="code" href="modules_8h.html#a12">ircd_module</a>;
-00464
-00465 <span class="preprocessor">#endif</span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:52 2004 for InspIRCd by
+00187 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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);
+00188
+00189
+00194 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+00195
+00204 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+00205
+00210 <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);
+00211 };
+00212
+00213
+<a name="l00219"></a><a class="code" href="classServer.html">00219</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00220 {
+00221 <span class="keyword">public</span>:
+00225 <a class="code" href="classServer.html#a0">Server</a>();
+00229 <span class="keyword">virtual</span> <a class="code" href="classServer.html#a1">~Server</a>();
+00230
+00234 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">SendOpers</a>(std::string s);
+00239 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Log</a>(<span class="keywordtype">int</span> level, std::string s);
+00244 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Send</a>(<span class="keywordtype">int</span> Socket, std::string s);
+00249 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s);
+00254 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s);
+00259 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s);
+00266 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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);
+00271 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
+00279 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender);
+00284 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text);
+00285
+00289 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">IsNick</a>(std::string nick);
+00293 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a13">FindNick</a>(std::string nick);
+00297 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a14">FindChannel</a>(std::string channel);
+00302 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a15">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
+00305 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a16">GetServerName</a>();
+00308 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a17">GetNetworkName</a>();
+00314 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a18">GetAdmin</a>();
+00333 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">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);
+00334
+00349 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a20">AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams);
+00350
+00372 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+00373
+00386 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a22">SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text);
+00387
+00393 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a23">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key);
+00394
+00400 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a24">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason);
+00401
+00407 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname);
+00408
+00419 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason);
+00420 };
+00421
+<a name="l00428"></a><a class="code" href="classConfigReader.html">00428</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00429 {
+00430 <span class="keyword">protected</span>:
+<a name="l00433"></a><a class="code" href="classConfigReader.html#n0">00433</a> std::string <a class="code" href="classConfigReader.html#n0">fname</a>;
+00434 <span class="keyword">public</span>:
+00439 <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
+00443 <span class="comment"></span> <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(std::string filename); <span class="comment">// read a module-specific config</span>
+00447 <span class="comment"></span> <a class="code" href="classConfigReader.html#a2">~ConfigReader</a>();
+00452 std::string <a class="code" href="classConfigReader.html#a3">ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index);
+00459 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">Enumerate</a>(std::string tag);
+00463 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">Verify</a>();
+00464 };
+00465
+00466
+00467
+<a name="l00473"></a><a class="code" href="classFileReader.html">00473</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00474 {
+<a name="l00475"></a><a class="code" href="classFileReader.html#o0">00475</a> <a class="code" href="modules_8h.html#a10">file_cache</a> <a class="code" href="classFileReader.html#o0">fc</a>;
+00476 <span class="keyword">public</span>:
+00481 <a class="code" href="classFileReader.html#a0">FileReader</a>();
+00487 <a class="code" href="classFileReader.html#a0">FileReader</a>(std::string filename);
+00491 <a class="code" href="classFileReader.html#a2">~FileReader</a>();
+00497 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">LoadFile</a>(std::string filename);
+00502 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">Exists</a>();
+00503 std::string <a class="code" href="classFileReader.html#a5">GetLine</a>(<span class="keywordtype">int</span> x);
+00509 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileSize</a>();
+00510 };
+00511
+00512
+<a name="l00519"></a><a class="code" href="classModuleFactory.html">00519</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00520 {
+00521 <span class="keyword">public</span>:
+<a name="l00522"></a><a class="code" href="classModuleFactory.html#a0">00522</a> <a class="code" href="classModuleFactory.html#a0">ModuleFactory</a>() { }
+<a name="l00523"></a><a class="code" href="classModuleFactory.html#a1">00523</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#a1">~ModuleFactory</a>() { }
+00528 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#a2">CreateModule</a>() = 0;
+00529 };
+00530
+00531
+<a name="l00532"></a><a class="code" href="modules_8h.html#a12">00532</a> <span class="keyword">typedef</span> DLLFactory&lt;ModuleFactory&gt; <a class="code" href="modules_8h.html#a12">ircd_module</a>;
+00533
+00534 <span class="preprocessor">#endif</span>
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/modules_8h.html b/docs/module-doc/modules_8h.html
index 8ef3d0f69..bfa686391 100644
--- a/docs/module-doc/modules_8h.html
+++ b/docs/module-doc/modules_8h.html
@@ -221,7 +221,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00017">17</a> of
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00018">18</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00244">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00273">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a name="a7" doxytag="modules.h::MT_SERVER"></a><p>
@@ -247,7 +247,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00244">Server::AddEx
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00019">19</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00244">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00273">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a name="a4" doxytag="modules.h::NONE"></a><p>
@@ -348,7 +348,7 @@ Low level definition of a <a class="el" href="classFileReader.html">FileReader</
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00029">29</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00298">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00309">FileReader::LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00327">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00338">FileReader::LoadFile()</a>. </td>
</tr>
</table>
<a name="a12" doxytag="modules.h::ircd_module"></a><p>
@@ -372,7 +372,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00298">FileReader::F
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00463">463</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00532">532</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="a11" doxytag="modules.h::string_list"></a><p>
@@ -449,7 +449,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00030">30</a> of
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00143">Server::AddCommand()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00172">Server::AddCommand()</a>. </td>
</tr>
</table>
<a name="a14" doxytag="modules.h::server_mode"></a><p>
@@ -495,10 +495,10 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00143">Server::AddCo
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00148">Server::SendMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00177">Server::SendMode()</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:56 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:34 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/namespaces.html b/docs/module-doc/namespaces.html
index f989d5226..333e5f65b 100644
--- a/docs/module-doc/namespaces.html
+++ b/docs/module-doc/namespaces.html
@@ -9,7 +9,7 @@
<hr><h1>InspIRCd Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:12 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/namespacestd.html b/docs/module-doc/namespacestd.html
index 5abb2108a..c47c030a5 100644
--- a/docs/module-doc/namespacestd.html
+++ b/docs/module-doc/namespacestd.html
@@ -11,7 +11,7 @@
<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:04:12 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/servers_8cpp-source.html b/docs/module-doc/servers_8cpp-source.html
index 7efe489b0..baa093388 100644
--- a/docs/module-doc/servers_8cpp-source.html
+++ b/docs/module-doc/servers_8cpp-source.html
@@ -46,7 +46,7 @@
00038 <a class="code" href="classconnection.html#m1">fd</a> = 0;
00039 }
00040
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:52 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/servers_8cpp.html b/docs/module-doc/servers_8cpp.html
index 296c1c2bc..72c0485cf 100644
--- a/docs/module-doc/servers_8cpp.html
+++ b/docs/module-doc/servers_8cpp.html
@@ -23,7 +23,7 @@ Include dependency graph for servers.cpp:<p><center><img src="servers_8cpp__incl
<a href="servers_8cpp-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:56 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:35 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/servers_8h-source.html b/docs/module-doc/servers_8h-source.html
index e7c74ffbb..6d0a538af 100644
--- a/docs/module-doc/servers_8h-source.html
+++ b/docs/module-doc/servers_8h-source.html
@@ -44,7 +44,7 @@
00060
00061 <span class="preprocessor">#endif</span>
00062 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:52 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/servers_8h.html b/docs/module-doc/servers_8h.html
index fe9832192..34123af62 100644
--- a/docs/module-doc/servers_8h.html
+++ b/docs/module-doc/servers_8h.html
@@ -82,7 +82,7 @@ Definition at line <a class="el" href="servers_8h-source.html#l00014">14</a> of
Definition at line <a class="el" href="servers_8h-source.html#l00015">15</a> of file <a class="el" href="servers_8h-source.html">servers.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:57 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:35 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/users_8cpp-source.html b/docs/module-doc/users_8cpp-source.html
index 307ca5fa1..2a71381c2 100644
--- a/docs/module-doc/users_8cpp-source.html
+++ b/docs/module-doc/users_8cpp-source.html
@@ -21,78 +21,79 @@
00013 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
00014 strcpy(nick,<span class="stringliteral">""</span>);
00015 <a class="code" href="classconnection.html#m3">ip</a> = 0;
-00016 strcpy(ident,<span class="stringliteral">""</span>);
-00017 strcpy(host,<span class="stringliteral">""</span>);
-00018 strcpy(dhost,<span class="stringliteral">""</span>);
-00019 strcpy(fullname,<span class="stringliteral">""</span>);
-00020 strcpy(modes,<span class="stringliteral">""</span>);
-00021 strcpy(inbuf,<span class="stringliteral">""</span>);
-00022 strcpy(server,<span class="stringliteral">""</span>);
-00023 strcpy(awaymsg,<span class="stringliteral">""</span>);
-00024 <a class="code" href="classconnection.html#m1">fd</a> = <a class="code" href="classconnection.html#m12">lastping</a> = <a class="code" href="classconnection.html#m13">signon</a> = <a class="code" href="classconnection.html#m14">idle_lastmsg</a> = <a class="code" href="classconnection.html#m15">nping</a> = <a class="code" href="classconnection.html#m11">registered</a> = 0;
-00025 <a class="code" href="classconnection.html#m10">port</a> = <a class="code" href="classconnection.html#m5">bytes_in</a> = <a class="code" href="classconnection.html#m6">bytes_out</a> = <a class="code" href="classconnection.html#m7">cmds_in</a> = <a class="code" href="classconnection.html#m8">cmds_out</a> = 0;
-00026 <a class="code" href="classconnection.html#m9">haspassed</a> = <span class="keyword">false</span>;
-00027 strcpy(result,<span class="stringliteral">""</span>);
-00028 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
-00029 {
-00030 <a class="code" href="classuserrec.html#m5">chans</a>[i].<a class="code" href="classucrec.html#m1">channel</a> = NULL;
-00031 }
-00032 <a class="code" href="classuserrec.html#o0">invites</a>.clear();
-00033 }
-00034
-00035
-<a name="l00036"></a><a class="code" href="classuserrec.html#a2">00036</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a2">userrec::GetFullHost</a>()
-00037 {
-00038 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
-00039 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
-00040 }
-00041
+00016 <a class="code" href="classuserrec.html#m9">timeout</a> = 0;
+00017 strcpy(ident,<span class="stringliteral">""</span>);
+00018 strcpy(host,<span class="stringliteral">""</span>);
+00019 strcpy(dhost,<span class="stringliteral">""</span>);
+00020 strcpy(fullname,<span class="stringliteral">""</span>);
+00021 strcpy(modes,<span class="stringliteral">""</span>);
+00022 strcpy(inbuf,<span class="stringliteral">""</span>);
+00023 strcpy(server,<span class="stringliteral">""</span>);
+00024 strcpy(awaymsg,<span class="stringliteral">""</span>);
+00025 <a class="code" href="classconnection.html#m1">fd</a> = <a class="code" href="classconnection.html#m12">lastping</a> = <a class="code" href="classconnection.html#m13">signon</a> = <a class="code" href="classconnection.html#m14">idle_lastmsg</a> = <a class="code" href="classconnection.html#m15">nping</a> = <a class="code" href="classconnection.html#m11">registered</a> = 0;
+00026 <a class="code" href="classconnection.html#m10">port</a> = <a class="code" href="classconnection.html#m5">bytes_in</a> = <a class="code" href="classconnection.html#m6">bytes_out</a> = <a class="code" href="classconnection.html#m7">cmds_in</a> = <a class="code" href="classconnection.html#m8">cmds_out</a> = 0;
+00027 <a class="code" href="classconnection.html#m9">haspassed</a> = <span class="keyword">false</span>;
+00028 strcpy(result,<span class="stringliteral">""</span>);
+00029 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
+00030 {
+00031 <a class="code" href="classuserrec.html#m5">chans</a>[i].<a class="code" href="classucrec.html#m1">channel</a> = NULL;
+00032 }
+00033 <a class="code" href="classuserrec.html#o0">invites</a>.clear();
+00034 }
+00035
+00036
+<a name="l00037"></a><a class="code" href="classuserrec.html#a2">00037</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a2">userrec::GetFullHost</a>()
+00038 {
+00039 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
+00040 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
+00041 }
00042
-<a name="l00043"></a><a class="code" href="classuserrec.html#a3">00043</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a3">userrec::GetFullRealHost</a>()
-00044 {
-00045 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
-00046 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
-00047 }
-00048
-<a name="l00049"></a><a class="code" href="classuserrec.html#a4">00049</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#a4">userrec::IsInvited</a>(<span class="keywordtype">char</span>* channel)
-00050 {
-00051 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
-00052 {
-00053 <span class="keywordflow">if</span> (i-&gt;channel) {
-00054 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-00055 {
-00056 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00057 }
-00058 }
-00059 }
-00060 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00061 }
-00062
-<a name="l00063"></a><a class="code" href="classuserrec.html#a5">00063</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a5">userrec::InviteTo</a>(<span class="keywordtype">char</span>* channel)
-00064 {
-00065 <a class="code" href="classInvited.html">Invited</a> i;
-00066 strcpy(i.<a class="code" href="classInvited.html#m0">channel</a>,channel);
-00067 <a class="code" href="classuserrec.html#o0">invites</a>.push_back(i);
-00068 }
-00069
-<a name="l00070"></a><a class="code" href="classuserrec.html#a6">00070</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a6">userrec::RemoveInvite</a>(<span class="keywordtype">char</span>* channel)
-00071 {
-00072 log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
-00073 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o0">invites</a>.size())
-00074 {
-00075 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
-00076 {
-00077 <span class="keywordflow">if</span> (i-&gt;channel) {
-00078 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-00079 {
-00080 <a class="code" href="classuserrec.html#o0">invites</a>.erase(i);
-00081 <span class="keywordflow">return</span>;
-00082 }
-00083 }
-00084 }
-00085 }
-00086 }
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:52 2004 for InspIRCd by
+00043
+<a name="l00044"></a><a class="code" href="classuserrec.html#a3">00044</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a3">userrec::GetFullRealHost</a>()
+00045 {
+00046 sprintf(result,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
+00047 <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#m8">result</a>;
+00048 }
+00049
+<a name="l00050"></a><a class="code" href="classuserrec.html#a4">00050</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#a4">userrec::IsInvited</a>(<span class="keywordtype">char</span>* channel)
+00051 {
+00052 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
+00053 {
+00054 <span class="keywordflow">if</span> (i-&gt;channel) {
+00055 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
+00056 {
+00057 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00058 }
+00059 }
+00060 }
+00061 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00062 }
+00063
+<a name="l00064"></a><a class="code" href="classuserrec.html#a5">00064</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a5">userrec::InviteTo</a>(<span class="keywordtype">char</span>* channel)
+00065 {
+00066 <a class="code" href="classInvited.html">Invited</a> i;
+00067 strcpy(i.<a class="code" href="classInvited.html#m0">channel</a>,channel);
+00068 <a class="code" href="classuserrec.html#o0">invites</a>.push_back(i);
+00069 }
+00070
+<a name="l00071"></a><a class="code" href="classuserrec.html#a6">00071</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a6">userrec::RemoveInvite</a>(<span class="keywordtype">char</span>* channel)
+00072 {
+00073 log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
+00074 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o0">invites</a>.size())
+00075 {
+00076 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#o0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#o0">invites</a>.end(); i++)
+00077 {
+00078 <span class="keywordflow">if</span> (i-&gt;channel) {
+00079 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
+00080 {
+00081 <a class="code" href="classuserrec.html#o0">invites</a>.erase(i);
+00082 <span class="keywordflow">return</span>;
+00083 }
+00084 }
+00085 }
+00086 }
+00087 }
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/users_8cpp.html b/docs/module-doc/users_8cpp.html
index 3d8bad193..789f8b105 100644
--- a/docs/module-doc/users_8cpp.html
+++ b/docs/module-doc/users_8cpp.html
@@ -25,7 +25,7 @@ Include dependency graph for users.cpp:<p><center><img src="users_8cpp__incl.gif
<a href="users_8cpp-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:57 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/users_8h-source.html b/docs/module-doc/users_8h-source.html
index 8cbeb7c70..dee94e172 100644
--- a/docs/module-doc/users_8h-source.html
+++ b/docs/module-doc/users_8h-source.html
@@ -39,60 +39,70 @@
00035 {
00036 <span class="keyword">public</span>:
<a name="l00037"></a><a class="code" href="classConnectClass.html#m0">00037</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#m0">type</a>;
-<a name="l00038"></a><a class="code" href="classConnectClass.html#m1">00038</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#m1">host</a>[MAXBUF];
-<a name="l00039"></a><a class="code" href="classConnectClass.html#m2">00039</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#m2">pass</a>[MAXBUF];
-00040 };
-00041
-<a name="l00044"></a><a class="code" href="users_8h.html#a6">00044</a> <span class="keyword">typedef</span> std::vector&lt;Invited&gt; <a class="code" href="users_8h.html#a6">InvitedList</a>;
-00045
-00046
-00047
-<a name="l00050"></a><a class="code" href="users_8h.html#a7">00050</a> <span class="keyword">typedef</span> std::vector&lt;ConnectClass&gt; <a class="code" href="users_8h.html#a7">ClassVector</a>;
-00051
-<a name="l00058"></a><a class="code" href="classuserrec.html">00058</a> <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a> : <span class="keyword">public</span> <a class="code" href="classconnection.html">connection</a>
-00059 {
-00060 <span class="keyword">private</span>:
-00061
-<a name="l00064"></a><a class="code" href="classuserrec.html#o0">00064</a> <a class="code" href="users_8h.html#a6">InvitedList</a> <a class="code" href="classuserrec.html#o0">invites</a>;
-00065 <span class="keyword">public</span>:
-00066
-<a name="l00071"></a><a class="code" href="classuserrec.html#m0">00071</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m0">nick</a>[NICKMAX];
-00072
-<a name="l00075"></a><a class="code" href="classuserrec.html#m1">00075</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m1">ident</a>[64];
-00076
-<a name="l00080"></a><a class="code" href="classuserrec.html#m2">00080</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m2">dhost</a>[256];
-00081
-<a name="l00084"></a><a class="code" href="classuserrec.html#m3">00084</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m3">fullname</a>[128];
-00085
-<a name="l00090"></a><a class="code" href="classuserrec.html#m4">00090</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m4">modes</a>[MAXBUF];
-00091
-<a name="l00092"></a><a class="code" href="classuserrec.html#m5">00092</a> <a class="code" href="classucrec.html">ucrec</a> <a class="code" href="classuserrec.html#m5">chans</a>[MAXCHANS];
+<a name="l00038"></a><a class="code" href="classConnectClass.html#m1">00038</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#m1">registration_timeout</a>;
+<a name="l00039"></a><a class="code" href="classConnectClass.html#m2">00039</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#m2">host</a>[MAXBUF];
+<a name="l00040"></a><a class="code" href="classConnectClass.html#m3">00040</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#m3">pass</a>[MAXBUF];
+00041
+<a name="l00042"></a><a class="code" href="classConnectClass.html#a0">00042</a> <a class="code" href="classConnectClass.html#a0">ConnectClass</a>()
+00043 {
+00044 registration_timeout = 0;
+00045 strcpy(host,<span class="stringliteral">""</span>);
+00046 strcpy(pass,<span class="stringliteral">""</span>);
+00047 }
+00048 };
+00049
+<a name="l00052"></a><a class="code" href="users_8h.html#a6">00052</a> <span class="keyword">typedef</span> std::vector&lt;Invited&gt; <a class="code" href="users_8h.html#a6">InvitedList</a>;
+00053
+00054
+00055
+<a name="l00058"></a><a class="code" href="users_8h.html#a7">00058</a> <span class="keyword">typedef</span> std::vector&lt;ConnectClass&gt; <a class="code" href="users_8h.html#a7">ClassVector</a>;
+00059
+<a name="l00066"></a><a class="code" href="classuserrec.html">00066</a> <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a> : <span class="keyword">public</span> <a class="code" href="classconnection.html">connection</a>
+00067 {
+00068 <span class="keyword">private</span>:
+00069
+<a name="l00072"></a><a class="code" href="classuserrec.html#o0">00072</a> <a class="code" href="users_8h.html#a6">InvitedList</a> <a class="code" href="classuserrec.html#o0">invites</a>;
+00073 <span class="keyword">public</span>:
+00074
+<a name="l00079"></a><a class="code" href="classuserrec.html#m0">00079</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m0">nick</a>[NICKMAX];
+00080
+<a name="l00083"></a><a class="code" href="classuserrec.html#m1">00083</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m1">ident</a>[64];
+00084
+<a name="l00088"></a><a class="code" href="classuserrec.html#m2">00088</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m2">dhost</a>[256];
+00089
+<a name="l00092"></a><a class="code" href="classuserrec.html#m3">00092</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m3">fullname</a>[128];
00093
-<a name="l00096"></a><a class="code" href="classuserrec.html#m6">00096</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m6">server</a>[256];
-00097
-<a name="l00101"></a><a class="code" href="classuserrec.html#m7">00101</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m7">awaymsg</a>[512];
-00102
-<a name="l00106"></a><a class="code" href="classuserrec.html#m8">00106</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m8">result</a>[256];
-00107
-00108 <a class="code" href="classuserrec.html#a0">userrec</a>();
-00109
-<a name="l00110"></a><a class="code" href="classuserrec.html#a1">00110</a> <span class="keyword">virtual</span> <a class="code" href="classuserrec.html#a1">~userrec</a>() { }
-00111
-00116 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a2">GetFullHost</a>();
-00117
-00123 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a3">GetFullRealHost</a>();
-00124
-00127 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#a4">IsInvited</a>(<span class="keywordtype">char</span>* channel);
-00128
-00131 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a5">InviteTo</a>(<span class="keywordtype">char</span>* channel);
-00132
-00137 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a6">RemoveInvite</a>(<span class="keywordtype">char</span>* channel);
+<a name="l00098"></a><a class="code" href="classuserrec.html#m4">00098</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m4">modes</a>[MAXBUF];
+00099
+<a name="l00100"></a><a class="code" href="classuserrec.html#m5">00100</a> <a class="code" href="classucrec.html">ucrec</a> <a class="code" href="classuserrec.html#m5">chans</a>[MAXCHANS];
+00101
+<a name="l00104"></a><a class="code" href="classuserrec.html#m6">00104</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m6">server</a>[256];
+00105
+<a name="l00109"></a><a class="code" href="classuserrec.html#m7">00109</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m7">awaymsg</a>[512];
+00110
+<a name="l00114"></a><a class="code" href="classuserrec.html#m8">00114</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#m8">result</a>[256];
+00115
+<a name="l00116"></a><a class="code" href="classuserrec.html#m9">00116</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#m9">timeout</a>;
+00117
+00118 <a class="code" href="classuserrec.html#a0">userrec</a>();
+00119
+<a name="l00120"></a><a class="code" href="classuserrec.html#a1">00120</a> <span class="keyword">virtual</span> <a class="code" href="classuserrec.html#a1">~userrec</a>() { }
+00121
+00126 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a2">GetFullHost</a>();
+00127
+00133 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#a3">GetFullRealHost</a>();
+00134
+00137 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#a4">IsInvited</a>(<span class="keywordtype">char</span>* channel);
00138
-00139 };
-00140
-00141
-00142 <span class="preprocessor">#endif</span>
-</pre></div><hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:52 2004 for InspIRCd by
+00141 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a5">InviteTo</a>(<span class="keywordtype">char</span>* channel);
+00142
+00147 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#a6">RemoveInvite</a>(<span class="keywordtype">char</span>* channel);
+00148
+00149 };
+00150
+00151
+00152 <span class="preprocessor">#endif</span>
+</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/docs/module-doc/users_8h.html b/docs/module-doc/users_8h.html
index 9e468bed3..519038f5a 100644
--- a/docs/module-doc/users_8h.html
+++ b/docs/module-doc/users_8h.html
@@ -216,7 +216,7 @@ Holds a complete list of all allow and deny tags from the configuration file (co
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00050">50</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00058">58</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a name="a6" doxytag="users.h::InvitedList"></a><p>
@@ -242,10 +242,10 @@ Holds a complete list of all channels to which a user has been invited and has n
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00044">44</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00052">52</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Mon Apr 5 02:03:58 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Tue Apr 6 11:42:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
diff --git a/include/inspircd.h b/include/inspircd.h
index 3d1872d01..7d7971532 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -102,4 +102,8 @@ bool ModeDefined(char c, int i);
bool ModeDefinedOper(char c, int i);
int ModeDefinedOn(char c, int i);
int ModeDefinedOff(char c, int i);
+chanrec* add_channel(userrec *user, const char* cn, const char* key);
+chanrec* del_channel(userrec *user, const char* cname, const char* reason);
+void force_nickchange(userrec* user,const char* newnick);
+void kill_link(userrec *user,const char* r);
diff --git a/include/modules.h b/include/modules.h
index 089ef0afc..d2c578b04 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -184,7 +184,7 @@ class Module : public classbase
* processing on the actual channel record at this point, however the channel NAME will still be passed in
* char* cname, so that you could for example implement a channel blacklist or whitelist, etc.
*/
- virtual int OnUserPreJoin(userrec* user, chanrec* chan, char* cname);
+ virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname);
/** Called whenever a user opers locally.
@@ -384,6 +384,39 @@ class Server : public classbase
* user must have both modes set to receive the message.
*/
virtual void SendToModeMask(std::string modes, int flags, std::string text);
+
+ /** Forces a user to join a channel.
+ * This is similar to svsjoin and can be used to implement redirection, etc.
+ * On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to.
+ * On failure, the result is NULL.
+ */
+ virtual chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key);
+
+ /** Forces a user to part a channel.
+ * This is similar to svspart and can be used to implement redirection, etc.
+ * Although the return value of this function is a pointer to a channel record, the returned data is
+ * undefined and should not be read or written to. This behaviour may be changed in a future version.
+ */
+ virtual chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason);
+
+ /** Forces a user nickchange.
+ * This command works similarly to SVSNICK, and can be used to implement Q-lines etc.
+ * If you specify an invalid nickname, the nick change will be dropped and the target user will receive
+ * the error numeric for it.
+ */
+ virtual void ChangeUserNick(userrec* user, std::string nickname);
+
+ /** Forces a user to quit with the specified reason.
+ * To the user, it will appear as if they typed /QUIT themselves, except for the fact that this function
+ * may bypass the quit prefix specified in the config file.
+ *
+ * WARNING!
+ *
+ * Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or
+ * read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of
+ * action after calling this method is to immediately bail from your handler.
+ */
+ virtual void QuitUser(userrec* user, std::string reason);
};
/** Allows reading of values from configuration files
diff --git a/src/InspIRCd.layout b/src/InspIRCd.layout
index bc21c54cb..b50480645 100644
--- a/src/InspIRCd.layout
+++ b/src/InspIRCd.layout
@@ -1,5 +1,5 @@
[Editors]
-Focused=1
+Focused=4
Order=7,3,2,6,25,24,4,5,0,-1,1
[Editor_0]
@@ -12,10 +12,10 @@ LeftChar=1
[Editor_1]
Open=1
-Top=1
-CursorCol=2
-CursorRow=3279
-TopLine=3279
+Top=0
+CursorCol=17
+CursorRow=1314
+TopLine=1295
LeftChar=1
[Editor_2]
@@ -36,10 +36,10 @@ LeftChar=1
[Editor_4]
Open=1
-Top=0
-CursorCol=51
-CursorRow=143
-TopLine=123
+Top=1
+CursorCol=63
+CursorRow=117
+TopLine=90
LeftChar=1
[Editor_5]
@@ -67,7 +67,7 @@ TopLine=6
LeftChar=1
[Editor_8]
-Open=0
+Open=1
Top=0
CursorCol=1
CursorRow=1
@@ -141,9 +141,9 @@ LeftChar=1
[Editor_17]
Open=1
Top=0
-CursorCol=52
-CursorRow=78
-TopLine=1
+CursorCol=51
+CursorRow=105
+TopLine=54
LeftChar=1
[Editor_18]
@@ -165,10 +165,10 @@ LeftChar=1
[Editor_20]
Open=1
Top=0
-CursorCol=14
-CursorRow=384
-TopLine=339
-LeftChar=3
+CursorCol=64
+CursorRow=187
+TopLine=146
+LeftChar=1
[Editor_21]
Open=1
@@ -213,7 +213,7 @@ Open=1
Top=0
CursorCol=1
CursorRow=13
-TopLine=2
+TopLine=23
LeftChar=1
[Editor_27]
Open=1
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 78d84c22e..1e4a8abc3 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -1298,10 +1298,9 @@ int usercount(chanrec *c)
/* add a channel to a user, creating the record for it if needed and linking
* it to the user record */
-chanrec* add_channel(userrec *user, char* cname, char* key)
+chanrec* add_channel(userrec *user, const char* cn, const char* key)
{
-
- if ((!user) || (!cname))
+ if ((!user) || (!cn))
{
log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter");
return 0;
@@ -1310,6 +1309,9 @@ chanrec* add_channel(userrec *user, char* cname, char* key)
int i = 0;
chanrec* Ptr;
int created = 0;
+ char cname[MAXBUF];
+
+ strncpy(cname,cn,MAXBUF);
// we MUST declare this wherever we use FOREACH_RESULT
int MOD_RESULT = 0;
@@ -1482,7 +1484,7 @@ chanrec* add_channel(userrec *user, char* cname, char* key)
/* remove a channel from a users record, and remove the record from memory
* if the channel has become empty */
-chanrec* del_channel(userrec *user, char* cname, char* reason)
+chanrec* del_channel(userrec *user, const char* cname, const char* reason)
{
if ((!user) || (!cname))
{
@@ -3155,9 +3157,13 @@ void handle_restart(char **parameters, int pcnt, userrec *user)
}
-void kill_link(userrec *user,char* reason)
+void kill_link(userrec *user,const char* r)
{
user_hash::iterator iter = clientlist.find(user->nick);
+
+ char reason[MAXBUF];
+
+ strncpy(reason,r,MAXBUF);
if (strlen(reason)>MAXQUIT)
{
@@ -4470,7 +4476,7 @@ void handle_oper(char **parameters, int pcnt, userrec *user)
WriteServ(user->fd,"491 %s :Invalid oper credentials",user->nick);
WriteOpers("*** WARNING! Failed oper attempt by %s!%s@%s!",user->nick,user->ident,user->host);
}
-
+
void handle_nick(char **parameters, int pcnt, userrec *user)
{
if (pcnt < 1)
@@ -4549,6 +4555,27 @@ void handle_nick(char **parameters, int pcnt, userrec *user)
log(DEBUG,"exit nickchange: %s",user->nick);
}
+void force_nickchange(userrec* user,const char* newnick)
+{
+ char nick[MAXBUF];
+ strcpy(nick,"");
+
+ if (user)
+ {
+ if (newnick)
+ {
+ strncpy(nick,newnick,MAXBUF);
+ }
+ if (user->registered == 7)
+ {
+ char* pars[1];
+ pars[0] = nick;
+ handle_nick(pars,1,user);
+ }
+ }
+}
+
+
int process_parameters(char **command_p,char *parameters)
{
int i = 0;
diff --git a/src/modules.cpp b/src/modules.cpp
index 5bea5133f..caacd9afc 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -114,7 +114,7 @@ void Module::OnPacketTransmit(char *p) { }
void Module::OnPacketReceive(char *p) { }
void Module::OnRehash() { }
void Module::OnServerRaw(std::string &raw, bool inbound) { }
-int Module::OnUserPreJoin(userrec* user, chanrec* chan, char* cname) { return 0; }
+int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; }
bool Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params) { }
Version Module::GetVersion() { return Version(1,0,0,0); }
void Module::OnOper(userrec* user) { };
@@ -143,6 +143,27 @@ void Server::SendToModeMask(std::string modes, int flags, std::string text)
WriteMode(modes.c_str(),flags,"%s",text.c_str());
}
+chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key)
+{
+ return add_channel(user,cname.c_str(),key.c_str());
+}
+
+chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason)
+{
+ return del_channel(user,cname.c_str(),reason.c_str());
+}
+
+void Server::ChangeUserNick(userrec* user, std::string nickname)
+{
+ force_nickchange(user,nickname.c_str());
+}
+
+void Server::QuitUser(userrec* user, std::string reason)
+{
+ kill_link(user,reason.c_str());
+}
+
+
void Server::Log(int level, std::string s)
{
log(level,"%s",s.c_str());