summaryrefslogtreecommitdiff
path: root/docs/module-doc/modules_8cpp-source.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/module-doc/modules_8cpp-source.html')
-rw-r--r--docs/module-doc/modules_8cpp-source.html1971
1 files changed, 950 insertions, 1021 deletions
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html
index 024038f7d..5f6dfb3be 100644
--- a/docs/module-doc/modules_8cpp-source.html
+++ b/docs/module-doc/modules_8cpp-source.html
@@ -4,7 +4,7 @@
<link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.3 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
+<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>modules.cpp</h1><a href="modules_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* +------------------------------------+</span>
00002 <span class="comment"> * | Inspire Internet Relay Chat Daemon |</span>
00003 <span class="comment"> * +------------------------------------+</span>
@@ -26,1055 +26,984 @@
00019 <span class="preprocessor">#include "inspircd_util.h"</span>
00020 <span class="preprocessor">#include "inspircd_config.h"</span>
00021 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-00022 <span class="preprocessor">#include &lt;fcntl.h&gt;</span>
-00023 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
-00024 <span class="preprocessor">#include &lt;sys/ioctl.h&gt;</span>
-00025 <span class="preprocessor">#include &lt;sys/utsname.h&gt;</span>
-00026 <span class="preprocessor">#ifdef USE_KQUEUE</span>
-00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/types.h&gt;</span>
-00028 <span class="preprocessor">#include &lt;sys/event.h&gt;</span>
-00029 <span class="preprocessor">#include &lt;sys/time.h&gt;</span>
-00030 <span class="preprocessor">#endif</span>
-00031 <span class="preprocessor"></span><span class="preprocessor">#include &lt;cstdio&gt;</span>
-00032 <span class="preprocessor">#include &lt;time.h&gt;</span>
-00033 <span class="preprocessor">#include &lt;string&gt;</span>
-00034 <span class="preprocessor">#ifdef GCC3</span>
-00035 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
-00036 <span class="preprocessor">#else</span>
-00037 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
-00038 <span class="preprocessor">#endif</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
-00040 <span class="preprocessor">#include &lt;sstream&gt;</span>
-00041 <span class="preprocessor">#include &lt;vector&gt;</span>
-00042 <span class="preprocessor">#include &lt;errno.h&gt;</span>
-00043 <span class="preprocessor">#include &lt;deque&gt;</span>
-00044 <span class="preprocessor">#include &lt;errno.h&gt;</span>
-00045 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-00046 <span class="preprocessor">#include &lt;sched.h&gt;</span>
-00047 <span class="preprocessor">#include "<a class="code" href="connection_8h.html">connection.h</a>"</span>
-00048 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-00049 <span class="preprocessor">#include "<a class="code" href="servers_8h.html">servers.h</a>"</span>
-00050 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
-00051 <span class="preprocessor">#include "globals.h"</span>
-00052 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
-00053 <span class="preprocessor">#include "dynamic.h"</span>
-00054 <span class="preprocessor">#include "wildcard.h"</span>
-00055 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
-00056 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
-00057 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
-00058 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
-00059 <span class="preprocessor">#include "inspstring.h"</span>
-00060
-00061 <span class="preprocessor">#ifdef GCC3</span>
-00062 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span>
-00063 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00064"></a><a class="code" href="modules_8cpp.html#a0">00064</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span>
-00065 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00066 <span class="preprocessor"></span>
-00067 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
-00068
-00069 <span class="preprocessor">#ifdef USE_KQUEUE</span>
-00070 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">int</span> kq;
-00071 <span class="preprocessor">#endif</span>
-00072 <span class="preprocessor"></span>
-00073 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>;
-<a name="l00074"></a><a class="code" href="modules_8cpp.html#a2">00074</a> <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#a2">modules</a>;
-<a name="l00075"></a><a class="code" href="modules_8cpp.html#a3">00075</a> <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#a3">factory</a>;
-00076
-<a name="l00077"></a><a class="code" href="modules_8cpp.html#a4">00077</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a37">TIME</a>;
-00078
-<a name="l00079"></a><a class="code" href="modules_8cpp.html#a5">00079</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a4">LogLevel</a>;
-<a name="l00080"></a><a class="code" href="modules_8cpp.html#a6">00080</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a5">ServerName</a>[MAXBUF];
-<a name="l00081"></a><a class="code" href="modules_8cpp.html#a7">00081</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a6">Network</a>[MAXBUF];
-<a name="l00082"></a><a class="code" href="modules_8cpp.html#a8">00082</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a7">ServerDesc</a>[MAXBUF];
-<a name="l00083"></a><a class="code" href="modules_8cpp.html#a9">00083</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a8">AdminName</a>[MAXBUF];
-<a name="l00084"></a><a class="code" href="modules_8cpp.html#a10">00084</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a9">AdminEmail</a>[MAXBUF];
-<a name="l00085"></a><a class="code" href="modules_8cpp.html#a11">00085</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a10">AdminNick</a>[MAXBUF];
-<a name="l00086"></a><a class="code" href="modules_8cpp.html#a12">00086</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a11">diepass</a>[MAXBUF];
-<a name="l00087"></a><a class="code" href="modules_8cpp.html#a13">00087</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a12">restartpass</a>[MAXBUF];
-<a name="l00088"></a><a class="code" href="modules_8cpp.html#a14">00088</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a13">motd</a>[MAXBUF];
-<a name="l00089"></a><a class="code" href="modules_8cpp.html#a15">00089</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a14">rules</a>[MAXBUF];
-<a name="l00090"></a><a class="code" href="modules_8cpp.html#a16">00090</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a15">list</a>[MAXBUF];
-<a name="l00091"></a><a class="code" href="modules_8cpp.html#a17">00091</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a16">PrefixQuit</a>[MAXBUF];
-<a name="l00092"></a><a class="code" href="modules_8cpp.html#a18">00092</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a17">DieValue</a>[MAXBUF];
+00022 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
+00023 <span class="preprocessor">#ifdef USE_KQUEUE</span>
+00024 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+00025 <span class="preprocessor">#include &lt;sys/event.h&gt;</span>
+00026 <span class="preprocessor">#include &lt;sys/time.h&gt;</span>
+00027 <span class="preprocessor">#endif</span>
+00028 <span class="preprocessor"></span><span class="preprocessor">#include &lt;time.h&gt;</span>
+00029 <span class="preprocessor">#include &lt;string&gt;</span>
+00030 <span class="preprocessor">#ifdef GCC3</span>
+00031 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
+00032 <span class="preprocessor">#else</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
+00034 <span class="preprocessor">#endif</span>
+00035 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
+00036 <span class="preprocessor">#include &lt;sstream&gt;</span>
+00037 <span class="preprocessor">#include &lt;vector&gt;</span>
+00038 <span class="preprocessor">#include &lt;deque&gt;</span>
+00039 <span class="preprocessor">#include "<a class="code" href="connection_8h.html">connection.h</a>"</span>
+00040 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+00041 <span class="preprocessor">#include "<a class="code" href="servers_8h.html">servers.h</a>"</span>
+00042 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+00043 <span class="preprocessor">#include "globals.h"</span>
+00044 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+00045 <span class="preprocessor">#include "dynamic.h"</span>
+00046 <span class="preprocessor">#include "wildcard.h"</span>
+00047 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+00048 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+00049 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+00050 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
+00051 <span class="preprocessor">#include "inspstring.h"</span>
+00052 <span class="preprocessor">#include "helperfuncs.h"</span>
+00053 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+00054
+00055 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
+00056
+00057 <span class="preprocessor">#ifdef USE_KQUEUE</span>
+00058 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">int</span> kq;
+00059 <span class="preprocessor">#endif</span>
+00060 <span class="preprocessor"></span>
+00061 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>;
+<a name="l00062"></a><a class="code" href="modules_8cpp.html#a1">00062</a> <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#a2">modules</a>;
+<a name="l00063"></a><a class="code" href="modules_8cpp.html#a2">00063</a> <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#a3">factory</a>;
+00064
+<a name="l00065"></a><a class="code" href="modules_8cpp.html#a3">00065</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a37">TIME</a>;
+00066
+<a name="l00067"></a><a class="code" href="modules_8cpp.html#a4">00067</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a4">LogLevel</a>;
+<a name="l00068"></a><a class="code" href="modules_8cpp.html#a5">00068</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a5">ServerName</a>[MAXBUF];
+<a name="l00069"></a><a class="code" href="modules_8cpp.html#a6">00069</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a6">Network</a>[MAXBUF];
+<a name="l00070"></a><a class="code" href="modules_8cpp.html#a7">00070</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a7">ServerDesc</a>[MAXBUF];
+<a name="l00071"></a><a class="code" href="modules_8cpp.html#a8">00071</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a8">AdminName</a>[MAXBUF];
+<a name="l00072"></a><a class="code" href="modules_8cpp.html#a9">00072</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a9">AdminEmail</a>[MAXBUF];
+<a name="l00073"></a><a class="code" href="modules_8cpp.html#a10">00073</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a10">AdminNick</a>[MAXBUF];
+<a name="l00074"></a><a class="code" href="modules_8cpp.html#a11">00074</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a11">diepass</a>[MAXBUF];
+<a name="l00075"></a><a class="code" href="modules_8cpp.html#a12">00075</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a12">restartpass</a>[MAXBUF];
+<a name="l00076"></a><a class="code" href="modules_8cpp.html#a13">00076</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a13">motd</a>[MAXBUF];
+<a name="l00077"></a><a class="code" href="modules_8cpp.html#a14">00077</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a14">rules</a>[MAXBUF];
+<a name="l00078"></a><a class="code" href="modules_8cpp.html#a15">00078</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a15">list</a>[MAXBUF];
+<a name="l00079"></a><a class="code" href="modules_8cpp.html#a16">00079</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a16">PrefixQuit</a>[MAXBUF];
+<a name="l00080"></a><a class="code" href="modules_8cpp.html#a17">00080</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a17">DieValue</a>[MAXBUF];
+00081
+<a name="l00082"></a><a class="code" href="modules_8cpp.html#a18">00082</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a18">debugging</a>;
+<a name="l00083"></a><a class="code" href="modules_8cpp.html#a19">00083</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a19">WHOWAS_STALE</a>;
+<a name="l00084"></a><a class="code" href="modules_8cpp.html#a20">00084</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a20">WHOWAS_MAX</a>;
+<a name="l00085"></a><a class="code" href="modules_8cpp.html#a21">00085</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a21">DieDelay</a>;
+<a name="l00086"></a><a class="code" href="modules_8cpp.html#a22">00086</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a22">startup_time</a>;
+<a name="l00087"></a><a class="code" href="modules_8cpp.html#a23">00087</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a23">NetBufferSize</a>;
+<a name="l00088"></a><a class="code" href="modules_8cpp.html#a24">00088</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a24">MaxWhoResults</a>;
+<a name="l00089"></a><a class="code" href="modules_8cpp.html#a25">00089</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a25">nb_start</a>;
+00090
+<a name="l00091"></a><a class="code" href="modules_8cpp.html#a26">00091</a> <span class="keyword">extern</span> std::vector&lt;int&gt; <a class="code" href="channels_8cpp.html#a26">fd_reap</a>;
+<a name="l00092"></a><a class="code" href="modules_8cpp.html#a27">00092</a> <span class="keyword">extern</span> std::vector&lt;std::string&gt; <a class="code" href="channels_8cpp.html#a27">module_names</a>;
00093
-<a name="l00094"></a><a class="code" href="modules_8cpp.html#a19">00094</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a18">debugging</a>;
-<a name="l00095"></a><a class="code" href="modules_8cpp.html#a20">00095</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a19">WHOWAS_STALE</a>;
-<a name="l00096"></a><a class="code" href="modules_8cpp.html#a21">00096</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a20">WHOWAS_MAX</a>;
-<a name="l00097"></a><a class="code" href="modules_8cpp.html#a22">00097</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a21">DieDelay</a>;
-<a name="l00098"></a><a class="code" href="modules_8cpp.html#a23">00098</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a22">startup_time</a>;
-<a name="l00099"></a><a class="code" href="modules_8cpp.html#a24">00099</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a23">NetBufferSize</a>;
-<a name="l00100"></a><a class="code" href="modules_8cpp.html#a25">00100</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a24">MaxWhoResults</a>;
-<a name="l00101"></a><a class="code" href="modules_8cpp.html#a26">00101</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a25">nb_start</a>;
+<a name="l00094"></a><a class="code" href="modules_8cpp.html#a28">00094</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a28">boundPortCount</a>;
+<a name="l00095"></a><a class="code" href="modules_8cpp.html#a29">00095</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a29">portCount</a>;
+<a name="l00096"></a><a class="code" href="modules_8cpp.html#a30">00096</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a30">SERVERportCount</a>;
+<a name="l00097"></a><a class="code" href="modules_8cpp.html#a31">00097</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a31">ports</a>[MAXSOCKS];
+<a name="l00098"></a><a class="code" href="modules_8cpp.html#a32">00098</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a32">defaultRoute</a>;
+00099
+<a name="l00100"></a><a class="code" href="modules_8cpp.html#a33">00100</a> <span class="keyword">extern</span> std::vector&lt;long&gt; <a class="code" href="channels_8cpp.html#a33">auth_cookies</a>;
+<a name="l00101"></a><a class="code" href="modules_8cpp.html#a34">00101</a> <span class="keyword">extern</span> std::stringstream <a class="code" href="channels_8cpp.html#a34">config_f</a>;
00102
-<a name="l00103"></a><a class="code" href="modules_8cpp.html#a27">00103</a> <span class="keyword">extern</span> std::vector&lt;int&gt; <a class="code" href="channels_8cpp.html#a26">fd_reap</a>;
-<a name="l00104"></a><a class="code" href="modules_8cpp.html#a28">00104</a> <span class="keyword">extern</span> std::vector&lt;std::string&gt; <a class="code" href="channels_8cpp.html#a27">module_names</a>;
-00105
-<a name="l00106"></a><a class="code" href="modules_8cpp.html#a29">00106</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a28">boundPortCount</a>;
-<a name="l00107"></a><a class="code" href="modules_8cpp.html#a30">00107</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a29">portCount</a>;
-<a name="l00108"></a><a class="code" href="modules_8cpp.html#a31">00108</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a30">SERVERportCount</a>;
-<a name="l00109"></a><a class="code" href="modules_8cpp.html#a32">00109</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a31">ports</a>[MAXSOCKS];
-<a name="l00110"></a><a class="code" href="modules_8cpp.html#a33">00110</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a32">defaultRoute</a>;
-00111
-<a name="l00112"></a><a class="code" href="modules_8cpp.html#a34">00112</a> <span class="keyword">extern</span> std::vector&lt;long&gt; <a class="code" href="channels_8cpp.html#a33">auth_cookies</a>;
-<a name="l00113"></a><a class="code" href="modules_8cpp.html#a35">00113</a> <span class="keyword">extern</span> std::stringstream <a class="code" href="channels_8cpp.html#a34">config_f</a>;
+<a name="l00103"></a><a class="code" href="modules_8cpp.html#a35">00103</a> <span class="keyword">extern</span> <a class="code" href="classserverrec.html">serverrec</a>* <a class="code" href="channels_8cpp.html#a35">me</a>[32];
+00104
+<a name="l00105"></a><a class="code" href="modules_8cpp.html#a36">00105</a> <span class="keyword">extern</span> FILE *<a class="code" href="channels_8cpp.html#a36">log_file</a>;
+00106
+<a name="l00107"></a><a class="code" href="modules_8cpp.html#a37">00107</a> <span class="keyword">extern</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="modules_8cpp.html#a37">fd_ref_table</a>[65536];
+00108
+<a name="l00109"></a><a class="code" href="modules_8cpp.html#a38">00109</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, userrec*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a38">user_hash</a>;
+<a name="l00110"></a><a class="code" href="modules_8cpp.html#a39">00110</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, chanrec*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a39">chan_hash</a>;
+<a name="l00111"></a><a class="code" href="modules_8cpp.html#a40">00111</a> <span class="keyword">typedef</span> nspace::hash_map&lt;in_addr,string*, nspace::hash&lt;in_addr&gt;, <a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>&gt; <a class="code" href="modules_8cpp.html#a40">address_cache</a>;
+<a name="l00112"></a><a class="code" href="modules_8cpp.html#a41">00112</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, WhoWasUser*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a41">whowas_hash</a>;
+<a name="l00113"></a><a class="code" href="modules_8cpp.html#a42">00113</a> <span class="keyword">typedef</span> std::deque&lt;command_t&gt; <a class="code" href="modules_8cpp.html#a42">command_table</a>;
00114
-<a name="l00115"></a><a class="code" href="modules_8cpp.html#a36">00115</a> <span class="keyword">extern</span> <a class="code" href="classserverrec.html">serverrec</a>* <a class="code" href="channels_8cpp.html#a35">me</a>[32];
-00116
-<a name="l00117"></a><a class="code" href="modules_8cpp.html#a37">00117</a> <span class="keyword">extern</span> FILE *<a class="code" href="channels_8cpp.html#a36">log_file</a>;
-00118
-<a name="l00119"></a><a class="code" href="modules_8cpp.html#a38">00119</a> <span class="keyword">extern</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[65536];
-00120
-<a name="l00121"></a><a class="code" href="namespacenspace.html">00121</a> <span class="keyword">namespace </span><a class="code" href="channels_8cpp.html#a0">nspace</a>
-00122 {
-00123 <span class="preprocessor">#ifdef GCC34</span>
-00124 <span class="preprocessor"></span> <span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span>hash&lt;in_addr&gt;
-00125 #else
-<a name="l00126"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html">00126</a> template&lt;&gt; struct <a class="code" href="channels_8cpp.html#a0">nspace</a>::hash&lt;in_addr&gt;
-00127 #endif
-00128 {
-<a name="l00129"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html#a0">00129</a> size_t operator()(<span class="keyword">const</span> <span class="keyword">struct</span> in_addr &amp;a)<span class="keyword"> const</span>
-00130 <span class="keyword"> </span>{
-00131 size_t q;
-00132 memcpy(&amp;q,&amp;a,<span class="keyword">sizeof</span>(size_t));
-00133 <span class="keywordflow">return</span> q;
-00134 }
-00135 };
-00136 <span class="preprocessor">#ifdef GCC34</span>
-00137 <span class="preprocessor"></span> <span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span>hash&lt;string&gt;
-00138 #else
-<a name="l00139"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html">00139</a> template&lt;&gt; struct <a class="code" href="channels_8cpp.html#a0">nspace</a>::hash&lt;string&gt;
-00140 #endif
-00141 {
-<a name="l00142"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html#a0">00142</a> size_t operator()(<span class="keyword">const</span> string &amp;s)<span class="keyword"> const</span>
-00143 <span class="keyword"> </span>{
-00144 <span class="keywordtype">char</span> a[MAXBUF];
-00145 <span class="keyword">static</span> <span class="keyword">struct </span>hash&lt;const char *&gt; strhash;
-00146 strlcpy(a,s.c_str(),MAXBUF);
-00147 strlower(a);
-00148 <span class="keywordflow">return</span> strhash(a);
-00149 }
-00150 };
-00151 }
-00152
-<a name="l00153"></a><a class="code" href="structStrHashComp.html">00153</a> <span class="keyword">struct </span><a class="code" href="structStrHashComp.html">StrHashComp</a>
-00154 {
-00155
-<a name="l00156"></a><a class="code" href="structStrHashComp.html#a0">00156</a> <span class="keywordtype">bool</span> <a class="code" href="structStrHashComp.html#a0">operator()</a>(<span class="keyword">const</span> string&amp; s1, <span class="keyword">const</span> string&amp; s2)<span class="keyword"> const</span>
-00157 <span class="keyword"> </span>{
-00158 <span class="keywordtype">char</span> a[MAXBUF],b[MAXBUF];
-00159 strlcpy(a,s1.c_str(),MAXBUF);
-00160 strlcpy(b,s2.c_str(),MAXBUF);
-00161 strlower(a);
-00162 strlower(b);
-00163 <span class="keywordflow">return</span> (strcasecmp(a,b) == 0);
-00164 }
-00165
-00166 };
-00167
-<a name="l00168"></a><a class="code" href="structInAddr__HashComp.html">00168</a> <span class="keyword">struct </span><a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>
-00169 {
-00170
-<a name="l00171"></a><a class="code" href="structInAddr__HashComp.html#a0">00171</a> <span class="keywordtype">bool</span> <a class="code" href="structInAddr__HashComp.html#a0">operator()</a>(<span class="keyword">const</span> in_addr &amp;s1, <span class="keyword">const</span> in_addr &amp;s2)<span class="keyword"> const</span>
-00172 <span class="keyword"> </span>{
-00173 size_t q;
-00174 size_t p;
-00175
-00176 memcpy(&amp;q,&amp;s1,<span class="keyword">sizeof</span>(size_t));
-00177 memcpy(&amp;p,&amp;s2,<span class="keyword">sizeof</span>(size_t));
-00178
-00179 <span class="keywordflow">return</span> (q == p);
-00180 }
+00115
+<a name="l00116"></a><a class="code" href="modules_8cpp.html#a43">00116</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a38">user_hash</a> <a class="code" href="modules_8cpp.html#a43">clientlist</a>;
+<a name="l00117"></a><a class="code" href="modules_8cpp.html#a44">00117</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">chan_hash</a> <a class="code" href="modules_8cpp.html#a44">chanlist</a>;
+<a name="l00118"></a><a class="code" href="modules_8cpp.html#a45">00118</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">whowas_hash</a> <a class="code" href="modules_8cpp.html#a45">whowas</a>;
+<a name="l00119"></a><a class="code" href="modules_8cpp.html#a46">00119</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a42">command_table</a> <a class="code" href="modules_8cpp.html#a46">cmdlist</a>;
+<a name="l00120"></a><a class="code" href="modules_8cpp.html#a47">00120</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a47">MOTD</a>;
+<a name="l00121"></a><a class="code" href="modules_8cpp.html#a48">00121</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a48">RULES</a>;
+<a name="l00122"></a><a class="code" href="modules_8cpp.html#a49">00122</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">address_cache</a> <a class="code" href="modules_8cpp.html#a49">IP</a>;
+00123
+00124
+00125 <span class="comment">// class type for holding an extended mode character - internal to core</span>
+00126
+<a name="l00127"></a><a class="code" href="classExtMode.html">00127</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00128 {
+00129 <span class="keyword">public</span>:
+<a name="l00130"></a><a class="code" href="classExtMode.html#o0">00130</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#o0">modechar</a>;
+<a name="l00131"></a><a class="code" href="classExtMode.html#o1">00131</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o1">type</a>;
+<a name="l00132"></a><a class="code" href="classExtMode.html#o2">00132</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o2">params_when_on</a>;
+<a name="l00133"></a><a class="code" href="classExtMode.html#o3">00133</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o3">params_when_off</a>;
+<a name="l00134"></a><a class="code" href="classExtMode.html#o4">00134</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#o4">needsoper</a>;
+<a name="l00135"></a><a class="code" href="classExtMode.html#o5">00135</a> <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>;
+<a name="l00136"></a><a class="code" href="classExtMode.html#a0">00136</a> <a class="code" href="classExtMode.html#a0">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#o0">modechar</a>(mc), <a class="code" href="classExtMode.html#o1">type</a>(ty), <a class="code" href="classExtMode.html#o4">needsoper</a>(oper), <a class="code" href="classExtMode.html#o2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#o3">params_when_off</a>(p_off) { };
+00137 };
+00138
+<a name="l00139"></a><a class="code" href="modules_8cpp.html#a50">00139</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="modules_8cpp.html#a50">ExtModeList</a>;
+<a name="l00140"></a><a class="code" href="modules_8cpp.html#a51">00140</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a>;
+00141
+00142
+<a name="l00143"></a><a class="code" href="modules_8cpp.html#a52">00143</a> <a class="code" href="modules_8cpp.html#a50">ExtModeList</a> <a class="code" href="modules_8cpp.html#a52">EMode</a>;
+00144
+00145 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00146"></a><a class="code" href="modules_8cpp.html#a53">00146</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a53">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00147 {
+00148 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
+00149 {
+00150 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+00151 {
+00152 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00153 }
+00154 }
+00155 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00156 }
+00157
+<a name="l00158"></a><a class="code" href="modules_8cpp.html#a54">00158</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00159 {
+00160 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
+00161 {
+00162 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;list == <span class="keyword">true</span>))
+00163 {
+00164 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00165 }
+00166 }
+00167 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00168 }
+00169
+<a name="l00170"></a><a class="code" href="modules_8cpp.html#a55">00170</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a55">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00171 {
+00172 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
+00173 {
+00174 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;needsoper == <span class="keyword">true</span>))
+00175 {
+00176 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00177 }
+00178 }
+00179 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00180 }
00181
-00182 };
-00183
-00184
-<a name="l00185"></a><a class="code" href="modules_8cpp.html#a39">00185</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, userrec*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a39">user_hash</a>;
-<a name="l00186"></a><a class="code" href="modules_8cpp.html#a40">00186</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, chanrec*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a40">chan_hash</a>;
-<a name="l00187"></a><a class="code" href="modules_8cpp.html#a41">00187</a> <span class="keyword">typedef</span> nspace::hash_map&lt;in_addr,string*, nspace::hash&lt;in_addr&gt;, <a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>&gt; <a class="code" href="modules_8cpp.html#a41">address_cache</a>;
-<a name="l00188"></a><a class="code" href="modules_8cpp.html#a42">00188</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, WhoWasUser*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a42">whowas_hash</a>;
-<a name="l00189"></a><a class="code" href="modules_8cpp.html#a43">00189</a> <span class="keyword">typedef</span> std::deque&lt;command_t&gt; <a class="code" href="modules_8cpp.html#a43">command_table</a>;
-00190
-00191
-<a name="l00192"></a><a class="code" href="modules_8cpp.html#a44">00192</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a44">clientlist</a>;
-<a name="l00193"></a><a class="code" href="modules_8cpp.html#a45">00193</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">chan_hash</a> <a class="code" href="modules_8cpp.html#a45">chanlist</a>;
-<a name="l00194"></a><a class="code" href="modules_8cpp.html#a46">00194</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a42">whowas_hash</a> <a class="code" href="modules_8cpp.html#a46">whowas</a>;
-<a name="l00195"></a><a class="code" href="modules_8cpp.html#a47">00195</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a43">command_table</a> <a class="code" href="modules_8cpp.html#a47">cmdlist</a>;
-<a name="l00196"></a><a class="code" href="modules_8cpp.html#a48">00196</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a48">MOTD</a>;
-<a name="l00197"></a><a class="code" href="modules_8cpp.html#a49">00197</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a49">RULES</a>;
-<a name="l00198"></a><a class="code" href="modules_8cpp.html#a50">00198</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">address_cache</a> <a class="code" href="modules_8cpp.html#a50">IP</a>;
-00199
-00200
-00201 <span class="comment">// class type for holding an extended mode character - internal to core</span>
-00202
-<a name="l00203"></a><a class="code" href="classExtMode.html">00203</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00204 {
-00205 <span class="keyword">public</span>:
-<a name="l00206"></a><a class="code" href="classExtMode.html#o0">00206</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#o0">modechar</a>;
-<a name="l00207"></a><a class="code" href="classExtMode.html#o1">00207</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o1">type</a>;
-<a name="l00208"></a><a class="code" href="classExtMode.html#o2">00208</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o2">params_when_on</a>;
-<a name="l00209"></a><a class="code" href="classExtMode.html#o3">00209</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o3">params_when_off</a>;
-<a name="l00210"></a><a class="code" href="classExtMode.html#o4">00210</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#o4">needsoper</a>;
-<a name="l00211"></a><a class="code" href="classExtMode.html#o5">00211</a> <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>;
-<a name="l00212"></a><a class="code" href="classExtMode.html#a0">00212</a> <a class="code" href="classExtMode.html#a0">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#o0">modechar</a>(mc), <a class="code" href="classExtMode.html#o1">type</a>(ty), <a class="code" href="classExtMode.html#o4">needsoper</a>(oper), <a class="code" href="classExtMode.html#o2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#o3">params_when_off</a>(p_off) { };
-00213 };
-00214
-<a name="l00215"></a><a class="code" href="modules_8cpp.html#a51">00215</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="modules_8cpp.html#a51">ExtModeList</a>;
-<a name="l00216"></a><a class="code" href="modules_8cpp.html#a52">00216</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a>;
+00182 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00183"></a><a class="code" href="modules_8cpp.html#a56">00183</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00184 {
+00185 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
+00186 {
+00187 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+00188 {
+00189 <span class="keywordflow">return</span> i-&gt;params_when_on;
+00190 }
+00191 }
+00192 <span class="keywordflow">return</span> 0;
+00193 }
+00194
+00195 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00196"></a><a class="code" href="modules_8cpp.html#a57">00196</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a57">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00197 {
+00198 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
+00199 {
+00200 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+00201 {
+00202 <span class="keywordflow">return</span> i-&gt;params_when_off;
+00203 }
+00204 }
+00205 <span class="keywordflow">return</span> 0;
+00206 }
+00207
+00208 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00209"></a><a class="code" href="modules_8cpp.html#a58">00209</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off)
+00210 {
+00211 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a53">ModeDefined</a>(modechar,type)) {
+00212 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00213 }
+00214 <a class="code" href="modules_8cpp.html#a52">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
+00215 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00216 }
00217
-00218
-<a name="l00219"></a><a class="code" href="modules_8cpp.html#a53">00219</a> <a class="code" href="modules_8cpp.html#a51">ExtModeList</a> <a class="code" href="modules_8cpp.html#a53">EMode</a>;
-00220
-00221 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00222"></a><a class="code" href="modules_8cpp.html#a54">00222</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00223 {
-00224 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
-00225 {
-00226 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-00227 {
-00228 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00229 }
-00230 }
-00231 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00232 }
+00218 <span class="comment">// turns a mode into a listmode</span>
+<a name="l00219"></a><a class="code" href="modules_8cpp.html#a59">00219</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a59">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
+00220 {
+00221 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
+00222 {
+00223 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>))
+00224 {
+00225 i-&gt;list = <span class="keyword">true</span>;
+00226 <span class="keywordflow">return</span>;
+00227 }
+00228 }
+00229 <span class="keywordflow">return</span>;
+00230 }
+00231
+00232 <span class="comment">// version is a simple class for holding a modules version number</span>
00233
-<a name="l00234"></a><a class="code" href="modules_8cpp.html#a55">00234</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a55">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00235 {
-00236 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
-00237 {
-00238 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;list == <span class="keyword">true</span>))
-00239 {
-00240 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00241 }
-00242 }
-00243 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00244 }
-00245
-<a name="l00246"></a><a class="code" href="modules_8cpp.html#a56">00246</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00247 {
-00248 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
-00249 {
-00250 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;needsoper == <span class="keyword">true</span>))
-00251 {
-00252 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00253 }
-00254 }
-00255 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00256 }
-00257
-00258 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00259"></a><a class="code" href="modules_8cpp.html#a57">00259</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a57">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00260 {
-00261 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
-00262 {
-00263 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-00264 {
-00265 <span class="keywordflow">return</span> i-&gt;params_when_on;
-00266 }
-00267 }
-00268 <span class="keywordflow">return</span> 0;
-00269 }
+<a name="l00234"></a><a class="code" href="classVersion.html#a0">00234</a> <a class="code" href="classVersion.html#a0">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
+00235
+00236 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
+00237
+<a name="l00238"></a><a class="code" href="classAdmin.html#a0">00238</a> <a class="code" href="classAdmin.html#a0">Admin::Admin</a>(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { };
+00239
+<a name="l00240"></a><a class="code" href="classRequest.html#a0">00240</a> <a class="code" href="classRequest.html#a0">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { };
+00241
+<a name="l00242"></a><a class="code" href="classRequest.html#a1">00242</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">Request::GetData</a>()
+00243 {
+00244 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p0">data</a>;
+00245 }
+00246
+<a name="l00247"></a><a class="code" href="classRequest.html#a2">00247</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">Request::GetSource</a>()
+00248 {
+00249 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p1">source</a>;
+00250 }
+00251
+<a name="l00252"></a><a class="code" href="classRequest.html#a3">00252</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">Request::GetDest</a>()
+00253 {
+00254 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p2">dest</a>;
+00255 }
+00256
+<a name="l00257"></a><a class="code" href="classRequest.html#a4">00257</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Request::Send</a>()
+00258 {
+00259 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classRequest.html#p2">dest</a>)
+00260 {
+00261 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#p2">dest</a>-&gt;<a class="code" href="classModule.html#a46">OnRequest</a>(<span class="keyword">this</span>);
+00262 }
+00263 <span class="keywordflow">else</span>
+00264 {
+00265 <span class="keywordflow">return</span> NULL;
+00266 }
+00267 }
+00268
+<a name="l00269"></a><a class="code" href="classEvent.html#a0">00269</a> <a class="code" href="classEvent.html#a0">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid) : data(anydata), source(src), id(eventid) { };
00270
-00271 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00272"></a><a class="code" href="modules_8cpp.html#a58">00272</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a58">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00273 {
-00274 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
-00275 {
-00276 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-00277 {
-00278 <span class="keywordflow">return</span> i-&gt;params_when_off;
-00279 }
-00280 }
-00281 <span class="keywordflow">return</span> 0;
-00282 }
-00283
-00284 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00285"></a><a class="code" href="modules_8cpp.html#a59">00285</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off)
-00286 {
-00287 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a54">ModeDefined</a>(modechar,type)) {
-00288 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00289 }
-00290 <a class="code" href="modules_8cpp.html#a53">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
-00291 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00292 }
-00293
-00294 <span class="comment">// turns a mode into a listmode</span>
-<a name="l00295"></a><a class="code" href="modules_8cpp.html#a60">00295</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a60">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
-00296 {
-00297 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
-00298 {
-00299 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>))
-00300 {
-00301 i-&gt;list = <span class="keyword">true</span>;
-00302 <span class="keywordflow">return</span>;
-00303 }
-00304 }
-00305 <span class="keywordflow">return</span>;
-00306 }
-00307
-00308 <span class="comment">// version is a simple class for holding a modules version number</span>
-00309
-<a name="l00310"></a><a class="code" href="classVersion.html#a0">00310</a> <a class="code" href="classVersion.html#a0">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
-00311
-00312 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
-00313
-<a name="l00314"></a><a class="code" href="classAdmin.html#a0">00314</a> <a class="code" href="classAdmin.html#a0">Admin::Admin</a>(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { };
-00315
-<a name="l00316"></a><a class="code" href="classRequest.html#a0">00316</a> <a class="code" href="classRequest.html#a0">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { };
-00317
-<a name="l00318"></a><a class="code" href="classRequest.html#a1">00318</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">Request::GetData</a>()
-00319 {
-00320 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p0">data</a>;
-00321 }
-00322
-<a name="l00323"></a><a class="code" href="classRequest.html#a2">00323</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">Request::GetSource</a>()
-00324 {
-00325 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p1">source</a>;
-00326 }
-00327
-<a name="l00328"></a><a class="code" href="classRequest.html#a3">00328</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">Request::GetDest</a>()
-00329 {
-00330 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p2">dest</a>;
-00331 }
-00332
-<a name="l00333"></a><a class="code" href="classRequest.html#a4">00333</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Request::Send</a>()
-00334 {
-00335 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classRequest.html#p2">dest</a>)
-00336 {
-00337 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#p2">dest</a>-&gt;<a class="code" href="classModule.html#a46">OnRequest</a>(<span class="keyword">this</span>);
-00338 }
-00339 <span class="keywordflow">else</span>
-00340 {
-00341 <span class="keywordflow">return</span> NULL;
-00342 }
-00343 }
-00344
-<a name="l00345"></a><a class="code" href="classEvent.html#a0">00345</a> <a class="code" href="classEvent.html#a0">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid) : data(anydata), source(src), id(eventid) { };
-00346
-<a name="l00347"></a><a class="code" href="classEvent.html#a1">00347</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">Event::GetData</a>()
-00348 {
-00349 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p0">data</a>;
-00350 }
-00351
-<a name="l00352"></a><a class="code" href="classEvent.html#a2">00352</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">Event::GetSource</a>()
-00353 {
-00354 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p1">source</a>;
-00355 }
-00356
-<a name="l00357"></a><a class="code" href="classEvent.html#a4">00357</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Event::Send</a>()
-00358 {
-00359 <a class="code" href="modules_8h.html#a24">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
-00360 <span class="keywordflow">return</span> NULL;
+<a name="l00271"></a><a class="code" href="classEvent.html#a1">00271</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">Event::GetData</a>()
+00272 {
+00273 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p0">data</a>;
+00274 }
+00275
+<a name="l00276"></a><a class="code" href="classEvent.html#a2">00276</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">Event::GetSource</a>()
+00277 {
+00278 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p1">source</a>;
+00279 }
+00280
+<a name="l00281"></a><a class="code" href="classEvent.html#a4">00281</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Event::Send</a>()
+00282 {
+00283 <a class="code" href="modules_8h.html#a24">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
+00284 <span class="keywordflow">return</span> NULL;
+00285 }
+00286
+<a name="l00287"></a><a class="code" href="classEvent.html#a3">00287</a> std::string <a class="code" href="classEvent.html#a3">Event::GetEventID</a>()
+00288 {
+00289 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p2">id</a>;
+00290 }
+00291
+00292
+00293 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
+<a name="l00294"></a><a class="code" href="classModule.html#a0">00294</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { }
+<a name="l00295"></a><a class="code" href="classModule.html#a1">00295</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { }
+<a name="l00296"></a><a class="code" href="classModule.html#a3">00296</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a3">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00297"></a><a class="code" href="classModule.html#a4">00297</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a4">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00298"></a><a class="code" href="classModule.html#a5">00298</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00299"></a><a class="code" href="classModule.html#a6">00299</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00300"></a><a class="code" href="classModule.html#a7">00300</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00301"></a><a class="code" href="classModule.html#a8">00301</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketTransmit</a>(std::string &amp;data, std::string serv) { }
+<a name="l00302"></a><a class="code" href="classModule.html#a9">00302</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnPacketReceive</a>(std::string &amp;data, std::string serv) { }
+<a name="l00303"></a><a class="code" href="classModule.html#a10">00303</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnRehash</a>() { }
+<a name="l00304"></a><a class="code" href="classModule.html#a11">00304</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a11">Module::OnServerRaw</a>(std::string &amp;raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00305"></a><a class="code" href="classModule.html#a13">00305</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a13">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="l00306"></a><a class="code" href="classModule.html#a12">00306</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &amp;params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+<a name="l00307"></a><a class="code" href="classModule.html#a2">00307</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); }
+<a name="l00308"></a><a class="code" href="classModule.html#a16">00308</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a16">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00309"></a><a class="code" href="classModule.html#a17">00309</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a17">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00310"></a><a class="code" href="classModule.html#a18">00310</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a18">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
+<a name="l00311"></a><a class="code" href="classModule.html#a19">00311</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
+<a name="l00312"></a><a class="code" href="classModule.html#a20">00312</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
+<a name="l00313"></a><a class="code" href="classModule.html#a21">00313</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
+<a name="l00314"></a><a class="code" href="classModule.html#a22">00314</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a22">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; };
+<a name="l00315"></a><a class="code" href="classModule.html#a23">00315</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a23">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { };
+<a name="l00316"></a><a class="code" href="classModule.html#a24">00316</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a24">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; };
+<a name="l00317"></a><a class="code" href="classModule.html#a25">00317</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a25">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
+<a name="l00318"></a><a class="code" href="classModule.html#a26">00318</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a26">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
+<a name="l00319"></a><a class="code" href="classModule.html#a27">00319</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a27">Module::On005Numeric</a>(std::string &amp;output) { };
+<a name="l00320"></a><a class="code" href="classModule.html#a28">00320</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a28">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00321"></a><a class="code" href="classModule.html#a29">00321</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { };
+<a name="l00322"></a><a class="code" href="classModule.html#a30">00322</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a30">Module::OnBackgroundTimer</a>(time_t curtime) { };
+<a name="l00323"></a><a class="code" href="classModule.html#a31">00323</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a31">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
+<a name="l00324"></a><a class="code" href="classModule.html#a32">00324</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a32">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
+<a name="l00325"></a><a class="code" href="classModule.html#a33">00325</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a33">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
+<a name="l00326"></a><a class="code" href="classModule.html#a34">00326</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a34">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00327"></a><a class="code" href="classModule.html#a14">00327</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a14">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00328"></a><a class="code" href="classModule.html#a15">00328</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { };
+<a name="l00329"></a><a class="code" href="classModule.html#a35">00329</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a35">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
+<a name="l00330"></a><a class="code" href="classModule.html#a36">00330</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a36">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00331"></a><a class="code" href="classModule.html#a37">00331</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a37">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven) { <span class="keywordflow">return</span> 0; };
+<a name="l00332"></a><a class="code" href="classModule.html#a38">00332</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a38">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00333"></a><a class="code" href="classModule.html#a39">00333</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a39">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00334"></a><a class="code" href="classModule.html#a40">00334</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a40">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
+<a name="l00335"></a><a class="code" href="classModule.html#a41">00335</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a41">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
+<a name="l00336"></a><a class="code" href="classModule.html#a42">00336</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a42">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
+<a name="l00337"></a><a class="code" href="classModule.html#a43">00337</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a43">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic) { <span class="keywordflow">return</span> 0; };
+<a name="l00338"></a><a class="code" href="classModule.html#a44">00338</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a44">Module::OnMeshToken</a>(<span class="keywordtype">char</span> token,string_list params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port) { <span class="keywordflow">return</span> 0; };
+<a name="l00339"></a><a class="code" href="classModule.html#a45">00339</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a45">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
+<a name="l00340"></a><a class="code" href="classModule.html#a46">00340</a> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#a46">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
+<a name="l00341"></a><a class="code" href="classModule.html#a47">00341</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a47">Module::OnOperCompare</a>(std::string password, std::string input) { <span class="keywordflow">return</span> 0; };
+<a name="l00342"></a><a class="code" href="classModule.html#a48">00342</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a48">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00343"></a><a class="code" href="classModule.html#a49">00343</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a49">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00344"></a><a class="code" href="classModule.html#a50">00344</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a50">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
+<a name="l00345"></a><a class="code" href="classModule.html#a51">00345</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a51">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
+<a name="l00346"></a><a class="code" href="classModule.html#a52">00346</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a52">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport) { };
+<a name="l00347"></a><a class="code" href="classModule.html#a53">00347</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a53">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; };
+<a name="l00348"></a><a class="code" href="classModule.html#a54">00348</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a54">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
+<a name="l00349"></a><a class="code" href="classModule.html#a55">00349</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a55">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &amp;readresult) { <span class="keywordflow">return</span> 0; };
+00350
+00351 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
+00352 <span class="comment">// exports in the core</span>
+00353 <span class="comment">//</span>
+00354
+<a name="l00355"></a><a class="code" href="classServer.html#a0">00355</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
+00356 {
+00357 }
+00358
+<a name="l00359"></a><a class="code" href="classServer.html#a1">00359</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
+00360 {
00361 }
00362
-<a name="l00363"></a><a class="code" href="classEvent.html#a3">00363</a> std::string <a class="code" href="classEvent.html#a3">Event::GetEventID</a>()
+<a name="l00363"></a><a class="code" href="classServer.html#a2">00363</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
00364 {
-00365 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p2">id</a>;
+00365 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
00366 }
00367
-00368
-00369 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
-<a name="l00370"></a><a class="code" href="classModule.html#a0">00370</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { }
-<a name="l00371"></a><a class="code" href="classModule.html#a1">00371</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { }
-<a name="l00372"></a><a class="code" href="classModule.html#a3">00372</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a3">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00373"></a><a class="code" href="classModule.html#a4">00373</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a4">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00374"></a><a class="code" href="classModule.html#a5">00374</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00375"></a><a class="code" href="classModule.html#a6">00375</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00376"></a><a class="code" href="classModule.html#a7">00376</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00377"></a><a class="code" href="classModule.html#a8">00377</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketTransmit</a>(std::string &amp;data, std::string serv) { }
-<a name="l00378"></a><a class="code" href="classModule.html#a9">00378</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnPacketReceive</a>(std::string &amp;data, std::string serv) { }
-<a name="l00379"></a><a class="code" href="classModule.html#a10">00379</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnRehash</a>() { }
-<a name="l00380"></a><a class="code" href="classModule.html#a11">00380</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a11">Module::OnServerRaw</a>(std::string &amp;raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00381"></a><a class="code" href="classModule.html#a13">00381</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a13">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="l00382"></a><a class="code" href="classModule.html#a12">00382</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &amp;params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
-<a name="l00383"></a><a class="code" href="classModule.html#a2">00383</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); }
-<a name="l00384"></a><a class="code" href="classModule.html#a16">00384</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a16">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00385"></a><a class="code" href="classModule.html#a17">00385</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a17">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00386"></a><a class="code" href="classModule.html#a18">00386</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a18">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
-<a name="l00387"></a><a class="code" href="classModule.html#a19">00387</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
-<a name="l00388"></a><a class="code" href="classModule.html#a20">00388</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
-<a name="l00389"></a><a class="code" href="classModule.html#a21">00389</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
-<a name="l00390"></a><a class="code" href="classModule.html#a22">00390</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a22">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; };
-<a name="l00391"></a><a class="code" href="classModule.html#a23">00391</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a23">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { };
-<a name="l00392"></a><a class="code" href="classModule.html#a24">00392</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a24">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; };
-<a name="l00393"></a><a class="code" href="classModule.html#a25">00393</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a25">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
-<a name="l00394"></a><a class="code" href="classModule.html#a26">00394</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a26">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
-<a name="l00395"></a><a class="code" href="classModule.html#a27">00395</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a27">Module::On005Numeric</a>(std::string &amp;output) { };
-<a name="l00396"></a><a class="code" href="classModule.html#a28">00396</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a28">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00397"></a><a class="code" href="classModule.html#a29">00397</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { };
-<a name="l00398"></a><a class="code" href="classModule.html#a30">00398</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a30">Module::OnBackgroundTimer</a>(time_t curtime) { };
-<a name="l00399"></a><a class="code" href="classModule.html#a31">00399</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a31">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
-<a name="l00400"></a><a class="code" href="classModule.html#a32">00400</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a32">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
-<a name="l00401"></a><a class="code" href="classModule.html#a33">00401</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a33">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
-<a name="l00402"></a><a class="code" href="classModule.html#a34">00402</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a34">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00403"></a><a class="code" href="classModule.html#a14">00403</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a14">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00404"></a><a class="code" href="classModule.html#a15">00404</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { };
-<a name="l00405"></a><a class="code" href="classModule.html#a35">00405</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a35">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
-<a name="l00406"></a><a class="code" href="classModule.html#a36">00406</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a36">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00407"></a><a class="code" href="classModule.html#a37">00407</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a37">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven) { <span class="keywordflow">return</span> 0; };
-<a name="l00408"></a><a class="code" href="classModule.html#a38">00408</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a38">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00409"></a><a class="code" href="classModule.html#a39">00409</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a39">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00410"></a><a class="code" href="classModule.html#a40">00410</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a40">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
-<a name="l00411"></a><a class="code" href="classModule.html#a41">00411</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a41">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
-<a name="l00412"></a><a class="code" href="classModule.html#a42">00412</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a42">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
-<a name="l00413"></a><a class="code" href="classModule.html#a43">00413</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a43">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic) { <span class="keywordflow">return</span> 0; };
-<a name="l00414"></a><a class="code" href="classModule.html#a44">00414</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a44">Module::OnMeshToken</a>(<span class="keywordtype">char</span> token,string_list params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port) { <span class="keywordflow">return</span> 0; };
-<a name="l00415"></a><a class="code" href="classModule.html#a45">00415</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a45">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
-<a name="l00416"></a><a class="code" href="classModule.html#a46">00416</a> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#a46">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
-<a name="l00417"></a><a class="code" href="classModule.html#a47">00417</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a47">Module::OnOperCompare</a>(std::string password, std::string input) { <span class="keywordflow">return</span> 0; };
-<a name="l00418"></a><a class="code" href="classModule.html#a48">00418</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a48">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00419"></a><a class="code" href="classModule.html#a49">00419</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a49">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00420"></a><a class="code" href="classModule.html#a50">00420</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a50">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
-<a name="l00421"></a><a class="code" href="classModule.html#a51">00421</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a51">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
-<a name="l00422"></a><a class="code" href="classModule.html#a52">00422</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a52">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport) { };
-<a name="l00423"></a><a class="code" href="classModule.html#a53">00423</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a53">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; };
-<a name="l00424"></a><a class="code" href="classModule.html#a54">00424</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a54">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
-<a name="l00425"></a><a class="code" href="classModule.html#a55">00425</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a55">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &amp;readresult) { <span class="keywordflow">return</span> 0; };
-00426
-00427 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
-00428 <span class="comment">// exports in the core</span>
-00429 <span class="comment">//</span>
-00430
-<a name="l00431"></a><a class="code" href="classServer.html#a0">00431</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
-00432 {
-00433 }
-00434
-<a name="l00435"></a><a class="code" href="classServer.html#a1">00435</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
-00436 {
-00437 }
-00438
-<a name="l00439"></a><a class="code" href="classServer.html#a2">00439</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
-00440 {
-00441 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
-00442 }
-00443
-<a name="l00444"></a><a class="code" href="classServer.html#a32">00444</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a32">Server::MatchText</a>(std::string sliteral, std::string spattern)
-00445 {
-00446 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-00447 strlcpy(literal,sliteral.c_str(),MAXBUF);
-00448 strlcpy(pattern,spattern.c_str(),MAXBUF);
-00449 <span class="keywordflow">return</span> match(literal,pattern);
-00450 }
-00451
-<a name="l00452"></a><a class="code" href="classServer.html#a27">00452</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
-00453 {
-00454 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-00455 }
-00456
-<a name="l00457"></a><a class="code" href="classServer.html#a28">00457</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a28">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
-00458 {
-00459 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
-00460 }
-00461
-<a name="l00462"></a><a class="code" href="classServer.html#a29">00462</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
-00463 {
-00464 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+<a name="l00368"></a><a class="code" href="classServer.html#a33">00368</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a33">Server::MatchText</a>(std::string sliteral, std::string spattern)
+00369 {
+00370 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+00371 strlcpy(literal,sliteral.c_str(),MAXBUF);
+00372 strlcpy(pattern,spattern.c_str(),MAXBUF);
+00373 <span class="keywordflow">return</span> match(literal,pattern);
+00374 }
+00375
+<a name="l00376"></a><a class="code" href="classServer.html#a28">00376</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a28">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
+00377 {
+00378 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00379 }
+00380
+<a name="l00381"></a><a class="code" href="classServer.html#a29">00381</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
+00382 {
+00383 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
+00384 }
+00385
+<a name="l00386"></a><a class="code" href="classServer.html#a30">00386</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a30">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
+00387 {
+00388 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+00389 }
+00390
+<a name="l00391"></a><a class="code" href="classServer.html#a38">00391</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a38">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
+00392 {
+00393 <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl;
+00394 userl.clear();
+00395 std::vector&lt;char*&gt; *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-&gt;<a class="code" href="classchanrec.html#a7">GetUsers</a>();
+00396 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;end(); i++)
+00397 {
+00398 <span class="keywordtype">char</span>* o = *i;
+00399 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
+00400 }
+00401 <span class="keywordflow">return</span> userl;
+00402 }
+<a name="l00403"></a><a class="code" href="classServer.html#a31">00403</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
+00404 {
+00405 force_nickchange(user,nickname.c_str());
+00406 }
+00407
+<a name="l00408"></a><a class="code" href="classServer.html#a32">00408</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a32">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+00409 {
+00410 kill_link(user,reason.c_str());
+00411 }
+00412
+<a name="l00413"></a><a class="code" href="classServer.html#a37">00413</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a37">Server::IsUlined</a>(std::string server)
+00414 {
+00415 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str());
+00416 }
+00417
+<a name="l00418"></a><a class="code" href="classServer.html#a34">00418</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
+00419 {
+00420 call_handler(commandname.c_str(),parameters,pcnt,user);
+00421 }
+00422
+<a name="l00423"></a><a class="code" href="classServer.html#a3">00423</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)
+00424 {
+00425 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00426 }
+00427
+<a name="l00428"></a><a class="code" href="classServer.html#a26">00428</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
+00429 {
+00430 <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source);
+00431 }
+00432
+<a name="l00433"></a><a class="code" href="classServer.html#a27">00433</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
+00434 {
+00435 <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user);
+00436 }
+00437
+<a name="l00438"></a><a class="code" href="classServer.html#a4">00438</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)
+00439 {
+00440 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00441 }
+00442
+<a name="l00443"></a><a class="code" href="classServer.html#a5">00443</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)
+00444 {
+00445 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00446 }
+00447
+<a name="l00448"></a><a class="code" href="classServer.html#a7">00448</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
+00449 {
+00450 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00451 }
+00452
+<a name="l00453"></a><a class="code" href="classServer.html#a8">00453</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
+00454 {
+00455 <span class="keywordflow">if</span> (!Source)
+00456 {
+00457 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+00458 Write(Dest-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
+00459 }
+00460 <span class="keywordflow">else</span>
+00461 {
+00462 <span class="comment">// otherwise it comes from the user specified</span>
+00463 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00464 }
00465 }
00466
-<a name="l00467"></a><a class="code" href="classServer.html#a37">00467</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a37">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
+<a name="l00467"></a><a class="code" href="classServer.html#a6">00467</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text)
00468 {
-00469 <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl;
-00470 userl.clear();
-00471 std::vector&lt;char*&gt; *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-&gt;<a class="code" href="classchanrec.html#a7">GetUsers</a>();
-00472 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;end(); i++)
-00473 {
-00474 <span class="keywordtype">char</span>* o = *i;
-00475 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
-00476 }
-00477 <span class="keywordflow">return</span> userl;
-00478 }
-<a name="l00479"></a><a class="code" href="classServer.html#a30">00479</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a30">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
-00480 {
-00481 force_nickchange(user,nickname.c_str());
+00469 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
+00470 }
+00471
+<a name="l00472"></a><a class="code" href="classServer.html#a9">00472</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">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)
+00473 {
+00474 <span class="keywordflow">if</span> (IncludeSender)
+00475 {
+00476 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00477 }
+00478 <span class="keywordflow">else</span>
+00479 {
+00480 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00481 }
00482 }
00483
-<a name="l00484"></a><a class="code" href="classServer.html#a31">00484</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+<a name="l00484"></a><a class="code" href="classServer.html#a10">00484</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
00485 {
-00486 kill_link(user,reason.c_str());
+00486 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0);
00487 }
00488
-<a name="l00489"></a><a class="code" href="classServer.html#a36">00489</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::IsUlined</a>(std::string server)
+<a name="l00489"></a><a class="code" href="classServer.html#a11">00489</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
00490 {
-00491 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str());
-00492 }
-00493
-<a name="l00494"></a><a class="code" href="classServer.html#a33">00494</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
-00495 {
-00496 call_handler(commandname.c_str(),parameters,pcnt,user);
-00497 }
-00498
-<a name="l00499"></a><a class="code" href="classServer.html#a3">00499</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)
-00500 {
-00501 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
-00502 }
-00503
-<a name="l00504"></a><a class="code" href="classServer.html#a25">00504</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
-00505 {
-00506 <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source);
-00507 }
-00508
-<a name="l00509"></a><a class="code" href="classServer.html#a26">00509</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
-00510 {
-00511 <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user);
-00512 }
-00513
-<a name="l00514"></a><a class="code" href="classServer.html#a4">00514</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)
-00515 {
-00516 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00517 }
-00518
-<a name="l00519"></a><a class="code" href="classServer.html#a5">00519</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)
-00520 {
-00521 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00522 }
-00523
-<a name="l00524"></a><a class="code" href="classServer.html#a7">00524</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
-00525 {
-00526 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00527 }
-00528
-<a name="l00529"></a><a class="code" href="classServer.html#a8">00529</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
-00530 {
-00531 <span class="keywordflow">if</span> (!Source)
-00532 {
-00533 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-00534 Write(Dest-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
-00535 }
-00536 <span class="keywordflow">else</span>
-00537 {
-00538 <span class="comment">// otherwise it comes from the user specified</span>
-00539 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-00540 }
-00541 }
-00542
-<a name="l00543"></a><a class="code" href="classServer.html#a6">00543</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text)
-00544 {
-00545 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
-00546 }
-00547
-<a name="l00548"></a><a class="code" href="classServer.html#a9">00548</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">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)
-00549 {
-00550 <span class="keywordflow">if</span> (IncludeSender)
-00551 {
-00552 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00553 }
-00554 <span class="keywordflow">else</span>
-00555 {
-00556 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00557 }
-00558 }
-00559
-<a name="l00560"></a><a class="code" href="classServer.html#a10">00560</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
-00561 {
-00562 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0);
-00563 }
-00564
-<a name="l00565"></a><a class="code" href="classServer.html#a11">00565</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
-00566 {
-00567 <span class="keywordflow">if</span> (IncludeSender)
-00568 {
-00569 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00570 }
-00571 <span class="keywordflow">else</span>
-00572 {
-00573 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00574 }
-00575 }
-00576
-<a name="l00577"></a><a class="code" href="classServer.html#a12">00577</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
-00578 {
-00579 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
-00580 }
-00581
-<a name="l00582"></a><a class="code" href="classServer.html#a34">00582</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host)
-00583 {
-00584 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str());
-00585 }
-00586
-<a name="l00587"></a><a class="code" href="classServer.html#a35">00587</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos)
-00588 {
-00589 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str());
-00590 }
-00591
-<a name="l00592"></a><a class="code" href="classServer.html#a13">00592</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">Server::IsNick</a>(std::string nick)
-00593 {
-00594 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0);
-00595 }
-00596
-<a name="l00597"></a><a class="code" href="classServer.html#a15">00597</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">Server::FindNick</a>(std::string nick)
-00598 {
-00599 <span class="keywordflow">return</span> Find(nick);
-00600 }
-00601
-<a name="l00602"></a><a class="code" href="classServer.html#a16">00602</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
-00603 {
-00604 <span class="keywordflow">return</span> (socket &lt; 65536 ? <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[socket] : NULL);
-00605 }
-00606
-<a name="l00607"></a><a class="code" href="classServer.html#a17">00607</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">Server::FindChannel</a>(std::string channel)
-00608 {
-00609 <span class="keywordflow">return</span> FindChan(channel.c_str());
-00610 }
-00611
-<a name="l00612"></a><a class="code" href="classServer.html#a18">00612</a> std::string <a class="code" href="classServer.html#a18">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-00613 {
-00614 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan);
-00615 }
-00616
-<a name="l00617"></a><a class="code" href="classServer.html#a19">00617</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-00618 {
-00619 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan);
-00620 }
-00621
-<a name="l00622"></a><a class="code" href="classServer.html#a20">00622</a> std::string <a class="code" href="classServer.html#a20">Server::GetServerName</a>()
-00623 {
-00624 <span class="keywordflow">return</span> getservername();
-00625 }
-00626
-<a name="l00627"></a><a class="code" href="classServer.html#a21">00627</a> std::string <a class="code" href="classServer.html#a21">Server::GetNetworkName</a>()
-00628 {
-00629 <span class="keywordflow">return</span> getnetworkname();
-00630 }
-00631
-<a name="l00632"></a><a class="code" href="classServer.html#a22">00632</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a22">Server::GetAdmin</a>()
-00633 {
-00634 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
-00635 }
-00636
-00637
-00638
-<a name="l00639"></a><a class="code" href="classServer.html#a23">00639</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a23">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)
-00640 {
-00641 <span class="keywordflow">if</span> (((modechar &gt;= <span class="charliteral">'A'</span>) &amp;&amp; (modechar &lt;= 'Z')) || ((modechar &gt;= <span class="charliteral">'a'</span>) &amp;&amp; (modechar &lt;= <span class="charliteral">'z'</span>)))
-00642 {
-00643 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00644 {
-00645 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00646 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00647 }
-00648 <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>))
-00649 {
-00650 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-00651 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00652 }
-00653 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
-00654 {
-00655 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-00656 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00657 }
-00658 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00659 }
-00660 <span class="keywordflow">else</span>
-00661 {
-00662 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
-00663 }
-00664 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00665 }
-00666
-<a name="l00667"></a><a class="code" href="classServer.html#a24">00667</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
-00668 {
-00669 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
-00670 <span class="keywordflow">if</span> (res)
-00671 <a class="code" href="modules_8cpp.html#a60">ModeMakeList</a>(modechar);
-00672 <span class="keywordflow">return</span> res;
-00673 }
-00674
-<a name="l00675"></a><a class="code" href="classServer.html#a14">00675</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
-00676 {
-00677 <span class="keywordflow">return</span> usercount(c);
-00678 }
-00679
-00680
-<a name="l00681"></a><a class="code" href="classServer.html#a38">00681</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a38">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message)
-00682 {
-00683 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
-00684 user-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
-00685 user-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
-00686 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,user-&gt;<a class="code" href="classconnection.html#o1">host</a>,message.c_str());
-00687 <span class="preprocessor">#ifdef USE_KQUEUE</span>
-00688 <span class="preprocessor"></span> <span class="keyword">struct </span>kevent ke;
-00689 EV_SET(&amp;ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
-00690 <span class="keywordtype">int</span> i = kevent(kq, &amp;ke, 1, 0, 0, NULL);
-00691 <span class="keywordflow">if</span> (i == -1)
-00692 {
-00693 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>);
-00694 }
-00695 <span class="preprocessor">#endif</span>
-00696 <span class="preprocessor"></span> shutdown(old_fd,2);
-00697 close(old_fd);
-00698 }
-00699
-<a name="l00700"></a><a class="code" href="classServer.html#a39">00700</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message)
-00701 {
-00702 zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a> = alive-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
-00703 alive-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
-00704 alive-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
-00705 Write(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,alive-&gt;<a class="code" href="classconnection.html#o1">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00706 kill_link(alive,message.c_str());
-00707 <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>] = zombie;
-00708 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
-00709 {
-00710 <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel != NULL)
-00711 {
-00712 <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel-&gt;name)
-00713 {
-00714 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>;
-00715 WriteFrom(zombie-&gt;fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
-00716 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#o5">topicset</a>)
-00717 {
-00718 WriteServ(zombie-&gt;fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o3">topic</a>);
-00719 WriteServ(zombie-&gt;fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o6">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o5">topicset</a>);
-00720 }
-00721 userlist(zombie,Ptr);
-00722 WriteServ(zombie-&gt;fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
-00723
-00724 }
-00725 }
-00726 }
-00727
-00728 }
-00729
-<a name="l00730"></a><a class="code" href="classServer.html#a40">00730</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00731 {
-00732 <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-00733 }
-00734
-<a name="l00735"></a><a class="code" href="classServer.html#a41">00735</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname)
-00736 {
-00737 <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
-00738 }
+00491 <span class="keywordflow">if</span> (IncludeSender)
+00492 {
+00493 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00494 }
+00495 <span class="keywordflow">else</span>
+00496 {
+00497 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00498 }
+00499 }
+00500
+<a name="l00501"></a><a class="code" href="classServer.html#a12">00501</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
+00502 {
+00503 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+00504 }
+00505
+<a name="l00506"></a><a class="code" href="classServer.html#a35">00506</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host)
+00507 {
+00508 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str());
+00509 }
+00510
+<a name="l00511"></a><a class="code" href="classServer.html#a36">00511</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a36">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos)
+00512 {
+00513 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str());
+00514 }
+00515
+<a name="l00516"></a><a class="code" href="classServer.html#a13">00516</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">Server::IsNick</a>(std::string nick)
+00517 {
+00518 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0);
+00519 }
+00520
+<a name="l00521"></a><a class="code" href="classServer.html#a15">00521</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">Server::FindNick</a>(std::string nick)
+00522 {
+00523 <span class="keywordflow">return</span> Find(nick);
+00524 }
+00525
+<a name="l00526"></a><a class="code" href="classServer.html#a16">00526</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
+00527 {
+00528 <span class="keywordflow">return</span> (socket &lt; 65536 ? <a class="code" href="modules_8cpp.html#a37">fd_ref_table</a>[socket] : NULL);
+00529 }
+00530
+<a name="l00531"></a><a class="code" href="classServer.html#a17">00531</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">Server::FindChannel</a>(std::string channel)
+00532 {
+00533 <span class="keywordflow">return</span> FindChan(channel.c_str());
+00534 }
+00535
+<a name="l00536"></a><a class="code" href="classServer.html#a18">00536</a> std::string <a class="code" href="classServer.html#a18">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+00537 {
+00538 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan);
+00539 }
+00540
+<a name="l00541"></a><a class="code" href="classServer.html#a19">00541</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+00542 {
+00543 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan);
+00544 }
+00545
+<a name="l00546"></a><a class="code" href="classServer.html#a20">00546</a> std::string <a class="code" href="classServer.html#a20">Server::GetServerName</a>()
+00547 {
+00548 <span class="keywordflow">return</span> getservername();
+00549 }
+00550
+<a name="l00551"></a><a class="code" href="classServer.html#a21">00551</a> std::string <a class="code" href="classServer.html#a21">Server::GetNetworkName</a>()
+00552 {
+00553 <span class="keywordflow">return</span> getnetworkname();
+00554 }
+00555
+<a name="l00556"></a><a class="code" href="classServer.html#a22">00556</a> std::string <a class="code" href="classServer.html#a22">Server::GetServerDescription</a>()
+00557 {
+00558 <span class="keywordflow">return</span> getserverdesc();
+00559 }
+00560
+<a name="l00561"></a><a class="code" href="classServer.html#a23">00561</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a23">Server::GetAdmin</a>()
+00562 {
+00563 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00564 }
+00565
+00566
+00567
+<a name="l00568"></a><a class="code" href="classServer.html#a24">00568</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">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)
+00569 {
+00570 <span class="keywordflow">if</span> (((modechar &gt;= <span class="charliteral">'A'</span>) &amp;&amp; (modechar &lt;= 'Z')) || ((modechar &gt;= <span class="charliteral">'a'</span>) &amp;&amp; (modechar &lt;= <span class="charliteral">'z'</span>)))
+00571 {
+00572 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
+00573 {
+00574 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+00575 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00576 }
+00577 <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>))
+00578 {
+00579 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00580 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00581 }
+00582 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+00583 {
+00584 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00585 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00586 }
+00587 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00588 }
+00589 <span class="keywordflow">else</span>
+00590 {
+00591 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
+00592 }
+00593 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00594 }
+00595
+<a name="l00596"></a><a class="code" href="classServer.html#a25">00596</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a25">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
+00597 {
+00598 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
+00599 <span class="keywordflow">if</span> (res)
+00600 <a class="code" href="modules_8cpp.html#a59">ModeMakeList</a>(modechar);
+00601 <span class="keywordflow">return</span> res;
+00602 }
+00603
+<a name="l00604"></a><a class="code" href="classServer.html#a14">00604</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
+00605 {
+00606 <span class="keywordflow">return</span> usercount(c);
+00607 }
+00608
+00609
+<a name="l00610"></a><a class="code" href="classServer.html#a39">00610</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message)
+00611 {
+00612 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
+00613 user-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
+00614 user-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
+00615 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,user-&gt;<a class="code" href="classconnection.html#o1">host</a>,message.c_str());
+00616 <span class="preprocessor">#ifdef USE_KQUEUE</span>
+00617 <span class="preprocessor"></span> <span class="keyword">struct </span>kevent ke;
+00618 EV_SET(&amp;ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
+00619 <span class="keywordtype">int</span> i = kevent(kq, &amp;ke, 1, 0, 0, NULL);
+00620 <span class="keywordflow">if</span> (i == -1)
+00621 {
+00622 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>);
+00623 }
+00624 <span class="preprocessor">#endif</span>
+00625 <span class="preprocessor"></span> shutdown(old_fd,2);
+00626 close(old_fd);
+00627 }
+00628
+<a name="l00629"></a><a class="code" href="classServer.html#a40">00629</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a40">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message)
+00630 {
+00631 zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a> = alive-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
+00632 alive-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
+00633 alive-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
+00634 Write(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,alive-&gt;<a class="code" href="classconnection.html#o1">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00635 kill_link(alive,message.c_str());
+00636 <a class="code" href="modules_8cpp.html#a37">fd_ref_table</a>[zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>] = zombie;
+00637 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
+00638 {
+00639 <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel != NULL)
+00640 {
+00641 <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel-&gt;name)
+00642 {
+00643 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>;
+00644 WriteFrom(zombie-&gt;fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
+00645 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#o5">topicset</a>)
+00646 {
+00647 WriteServ(zombie-&gt;fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o3">topic</a>);
+00648 WriteServ(zombie-&gt;fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o6">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o5">topicset</a>);
+00649 }
+00650 userlist(zombie,Ptr);
+00651 WriteServ(zombie-&gt;fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
+00652
+00653 }
+00654 }
+00655 }
+00656
+00657 }
+00658
+<a name="l00659"></a><a class="code" href="classServer.html#a41">00659</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+00660 {
+00661 <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00662 }
+00663
+<a name="l00664"></a><a class="code" href="classServer.html#a42">00664</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname)
+00665 {
+00666 <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
+00667 }
+00668
+<a name="l00669"></a><a class="code" href="classServer.html#a43">00669</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr)
+00670 {
+00671 <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
+00672 }
+00673
+<a name="l00674"></a><a class="code" href="classServer.html#a44">00674</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+00675 {
+00676 <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00677 }
+00678
+<a name="l00679"></a><a class="code" href="classServer.html#a45">00679</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a45">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+00680 {
+00681 <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00682 }
+00683
+<a name="l00684"></a><a class="code" href="classServer.html#a46">00684</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelGLine</a>(std::string hostmask)
+00685 {
+00686 <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str());
+00687 }
+00688
+<a name="l00689"></a><a class="code" href="classServer.html#a47">00689</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelQLine</a>(std::string nickname)
+00690 {
+00691 <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str());
+00692 }
+00693
+<a name="l00694"></a><a class="code" href="classServer.html#a48">00694</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">Server::DelZLine</a>(std::string ipaddr)
+00695 {
+00696 <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str());
+00697 }
+00698
+<a name="l00699"></a><a class="code" href="classServer.html#a49">00699</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::DelKLine</a>(std::string hostmask)
+00700 {
+00701 <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str());
+00702 }
+00703
+<a name="l00704"></a><a class="code" href="classServer.html#a50">00704</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a50">Server::DelELine</a>(std::string hostmask)
+00705 {
+00706 <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str());
+00707 }
+00708
+<a name="l00709"></a><a class="code" href="classServer.html#a51">00709</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a51">Server::CalcDuration</a>(std::string delta)
+00710 {
+00711 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str());
+00712 }
+00713
+<a name="l00714"></a><a class="code" href="classServer.html#a52">00714</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a52">Server::IsValidMask</a>(std::string mask)
+00715 {
+00716 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+00717 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+00718 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00719 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+00720 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00721 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00722 <span class="keywordflow">if</span> (dest[i] &lt; 32)
+00723 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00724 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00725 <span class="keywordflow">if</span> (dest[i] &gt; 126)
+00726 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00727 <span class="keywordtype">int</span> c = 0;
+00728 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00729 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+00730 c++;
+00731 <span class="keywordflow">if</span> (c&gt;1)
+00732 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00733 c = 0;
+00734 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00735 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+00736 c++;
+00737 <span class="keywordflow">if</span> (c&gt;1)
+00738 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00739
-<a name="l00740"></a><a class="code" href="classServer.html#a42">00740</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr)
-00741 {
-00742 <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
-00743 }
-00744
-<a name="l00745"></a><a class="code" href="classServer.html#a43">00745</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00746 {
-00747 <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-00748 }
-00749
-<a name="l00750"></a><a class="code" href="classServer.html#a44">00750</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00751 {
-00752 <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-00753 }
-00754
-<a name="l00755"></a><a class="code" href="classServer.html#a45">00755</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelGLine</a>(std::string hostmask)
-00756 {
-00757 <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str());
-00758 }
-00759
-<a name="l00760"></a><a class="code" href="classServer.html#a46">00760</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelQLine</a>(std::string nickname)
-00761 {
-00762 <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str());
-00763 }
-00764
-<a name="l00765"></a><a class="code" href="classServer.html#a47">00765</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelZLine</a>(std::string ipaddr)
-00766 {
-00767 <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str());
-00768 }
-00769
-<a name="l00770"></a><a class="code" href="classServer.html#a48">00770</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">Server::DelKLine</a>(std::string hostmask)
-00771 {
-00772 <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str());
-00773 }
-00774
-<a name="l00775"></a><a class="code" href="classServer.html#a49">00775</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::DelELine</a>(std::string hostmask)
-00776 {
-00777 <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str());
-00778 }
-00779
-<a name="l00780"></a><a class="code" href="classServer.html#a50">00780</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a50">Server::CalcDuration</a>(std::string delta)
-00781 {
-00782 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str());
-00783 }
-00784
-<a name="l00785"></a><a class="code" href="classServer.html#a51">00785</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a51">Server::IsValidMask</a>(std::string mask)
-00786 {
-00787 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
-00788 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
-00789 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00790 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
-00791 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00792 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00793 <span class="keywordflow">if</span> (dest[i] &lt; 32)
-00794 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00795 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00796 <span class="keywordflow">if</span> (dest[i] &gt; 126)
-00797 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00798 <span class="keywordtype">int</span> c = 0;
-00799 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00800 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
-00801 c++;
-00802 <span class="keywordflow">if</span> (c&gt;1)
-00803 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00804 c = 0;
-00805 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00806 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
-00807 c++;
-00808 <span class="keywordflow">if</span> (c&gt;1)
-00809 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00810
-00811 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00812 }
-00813
-<a name="l00814"></a><a class="code" href="classServer.html#a52">00814</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a52">Server::MeshSendAll</a>(std::string text)
-00815 {
-00816 NetSendToAll((<span class="keywordtype">char</span>*)text.c_str());
-00817 }
-00818
-<a name="l00819"></a><a class="code" href="classServer.html#a53">00819</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">Server::MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text)
-00820 {
-00821 <span class="keywordflow">if</span> (user)
-00822 NetSendToCommon(user,(<span class="keywordtype">char</span>*)text.c_str());
-00823 }
-00824
-<a name="l00825"></a><a class="code" href="classServer.html#a54">00825</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">Server::MeshSendAllAlive</a>(std::string text)
-00826 {
-00827 NetSendToAllAlive((<span class="keywordtype">char</span>*)text.c_str());
-00828 }
-00829
-<a name="l00830"></a><a class="code" href="classServer.html#a55">00830</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">Server::MeshSendUnicast</a>(std::string destination, std::string text)
-00831 {
-00832 NetSendToOne((<span class="keywordtype">char</span>*)destination.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
-00833 }
-00834
-<a name="l00835"></a><a class="code" href="classServer.html#a56">00835</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">Server::MeshSendAllExcept</a>(std::string target, std::string text)
-00836 {
-00837 NetSendToAllExcept(target.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
-00838 }
-00839
-<a name="l00840"></a><a class="code" href="classServer.html#a57">00840</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a57">Server::MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername)
-00841 {
-00842 <span class="keywordflow">if</span> (c)
-00843 {
-00844 <span class="keywordflow">return</span> ChanAnyOnThisServer(c,(<span class="keywordtype">char</span>*)servername.c_str());
-00845 }
-00846 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00847 }
-00848
-<a name="l00849"></a><a class="code" href="classServer.html#a58">00849</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">Server::MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername)
-00850 {
-00851 <span class="keywordflow">if</span> (u)
+00740 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00741 }
+00742
+<a name="l00743"></a><a class="code" href="classServer.html#a53">00743</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">Server::MeshSendAll</a>(std::string text)
+00744 {
+00745 NetSendToAll((<span class="keywordtype">char</span>*)text.c_str());
+00746 }
+00747
+<a name="l00748"></a><a class="code" href="classServer.html#a54">00748</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">Server::MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text)
+00749 {
+00750 <span class="keywordflow">if</span> (user)
+00751 NetSendToCommon(user,(<span class="keywordtype">char</span>*)text.c_str());
+00752 }
+00753
+<a name="l00754"></a><a class="code" href="classServer.html#a55">00754</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">Server::MeshSendAllAlive</a>(std::string text)
+00755 {
+00756 NetSendToAllAlive((<span class="keywordtype">char</span>*)text.c_str());
+00757 }
+00758
+<a name="l00759"></a><a class="code" href="classServer.html#a56">00759</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">Server::MeshSendUnicast</a>(std::string destination, std::string text)
+00760 {
+00761 NetSendToOne((<span class="keywordtype">char</span>*)destination.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
+00762 }
+00763
+<a name="l00764"></a><a class="code" href="classServer.html#a57">00764</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a57">Server::MeshSendAllExcept</a>(std::string target, std::string text)
+00765 {
+00766 NetSendToAllExcept(target.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
+00767 }
+00768
+<a name="l00769"></a><a class="code" href="classServer.html#a58">00769</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">Server::MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername)
+00770 {
+00771 <span class="keywordflow">if</span> (c)
+00772 {
+00773 <span class="keywordflow">return</span> ChanAnyOnThisServer(c,(<span class="keywordtype">char</span>*)servername.c_str());
+00774 }
+00775 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00776 }
+00777
+<a name="l00778"></a><a class="code" href="classServer.html#a59">00778</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a59">Server::MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername)
+00779 {
+00780 <span class="keywordflow">if</span> (u)
+00781 {
+00782 <span class="keywordflow">return</span> CommonOnThisServer(u,(<span class="keywordtype">char</span>*)servername.c_str());
+00783 }
+00784 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00785 }
+00786
+<a name="l00787"></a><a class="code" href="classServer.html#a60">00787</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a60">Server::FindModule</a>(std::string name)
+00788 {
+00789 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt;= <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; i++)
+00790 {
+00791 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a27">module_names</a>[i] == name)
+00792 {
+00793 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#a2">modules</a>[i];
+00794 }
+00795 }
+00796 <span class="keywordflow">return</span> NULL;
+00797 }
+00798
+<a name="l00799"></a><a class="code" href="classConfigReader.html#a0">00799</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
+00800 {
+00801 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00802 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00803 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
+00804 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
+00805 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
+00806 }
+00807
+00808
+<a name="l00809"></a><a class="code" href="classConfigReader.html#a2">00809</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
+00810 {
+00811 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>)
+00812 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>;
+00813 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>)
+00814 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>;
+00815 }
+00816
+00817
+<a name="l00818"></a><a class="code" href="classConfigReader.html#a1">00818</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
+00819 {
+00820 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00821 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00822 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>);
+00823 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
+00824 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
+00825 };
+00826
+<a name="l00827"></a><a class="code" href="classConfigReader.html#a3">00827</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)
+00828 {
+00829 <span class="keywordtype">char</span> val[MAXBUF];
+00830 <span class="keywordtype">char</span> t[MAXBUF];
+00831 <span class="keywordtype">char</span> n[MAXBUF];
+00832 strlcpy(t,tag.c_str(),MAXBUF);
+00833 strlcpy(n,name.c_str(),MAXBUF);
+00834 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00835 <span class="keywordflow">if</span> (!res)
+00836 {
+00837 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00838 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00839 }
+00840 <span class="keywordflow">return</span> val;
+00841 }
+00842
+<a name="l00843"></a><a class="code" href="classConfigReader.html#a4">00843</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
+00844 {
+00845 <span class="keywordtype">char</span> val[MAXBUF];
+00846 <span class="keywordtype">char</span> t[MAXBUF];
+00847 <span class="keywordtype">char</span> n[MAXBUF];
+00848 strlcpy(t,tag.c_str(),MAXBUF);
+00849 strlcpy(n,name.c_str(),MAXBUF);
+00850 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00851 <span class="keywordflow">if</span> (!res)
00852 {
-00853 <span class="keywordflow">return</span> CommonOnThisServer(u,(<span class="keywordtype">char</span>*)servername.c_str());
-00854 }
-00855 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00856 }
-00857
-<a name="l00858"></a><a class="code" href="classServer.html#a59">00858</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a59">Server::FindModule</a>(std::string name)
-00859 {
-00860 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt;= <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; i++)
-00861 {
-00862 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a27">module_names</a>[i] == name)
-00863 {
-00864 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#a2">modules</a>[i];
-00865 }
-00866 }
-00867 <span class="keywordflow">return</span> NULL;
-00868 }
-00869
-<a name="l00870"></a><a class="code" href="classConfigReader.html#a0">00870</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
-00871 {
-00872 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00873 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00874 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
-00875 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
-00876 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
-00877 }
-00878
-00879
-<a name="l00880"></a><a class="code" href="classConfigReader.html#a2">00880</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
-00881 {
-00882 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>)
-00883 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>;
-00884 <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>)
-00885 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>;
-00886 }
-00887
+00853 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00854 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00855 }
+00856 std::string s = val;
+00857 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
+00858 }
+00859
+<a name="l00860"></a><a class="code" href="classConfigReader.html#a5">00860</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
+00861 {
+00862 <span class="keywordtype">char</span> val[MAXBUF];
+00863 <span class="keywordtype">char</span> t[MAXBUF];
+00864 <span class="keywordtype">char</span> n[MAXBUF];
+00865 strlcpy(t,tag.c_str(),MAXBUF);
+00866 strlcpy(n,name.c_str(),MAXBUF);
+00867 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00868 <span class="keywordflow">if</span> (!res)
+00869 {
+00870 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00871 <span class="keywordflow">return</span> 0;
+00872 }
+00873 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
+00874 {
+00875 <span class="keywordflow">if</span> (!isdigit(val[i]))
+00876 {
+00877 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>;
+00878 <span class="keywordflow">return</span> 0;
+00879 }
+00880 }
+00881 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
+00882 {
+00883 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>;
+00884 <span class="keywordflow">return</span> 0;
+00885 }
+00886 <span class="keywordflow">return</span> atoi(val);
+00887 }
00888
-<a name="l00889"></a><a class="code" href="classConfigReader.html#a1">00889</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
+<a name="l00889"></a><a class="code" href="classConfigReader.html#a6">00889</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>()
00890 {
-00891 this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00892 this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00893 this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>);
-00894 <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
-00895 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
-00896 };
-00897
-<a name="l00898"></a><a class="code" href="classConfigReader.html#a3">00898</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)
-00899 {
-00900 <span class="keywordtype">char</span> val[MAXBUF];
-00901 <span class="keywordtype">char</span> t[MAXBUF];
-00902 <span class="keywordtype">char</span> n[MAXBUF];
-00903 strlcpy(t,tag.c_str(),MAXBUF);
-00904 strlcpy(n,name.c_str(),MAXBUF);
-00905 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00906 <span class="keywordflow">if</span> (!res)
-00907 {
-00908 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00909 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00910 }
-00911 <span class="keywordflow">return</span> val;
-00912 }
-00913
-<a name="l00914"></a><a class="code" href="classConfigReader.html#a4">00914</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
-00915 {
-00916 <span class="keywordtype">char</span> val[MAXBUF];
-00917 <span class="keywordtype">char</span> t[MAXBUF];
-00918 <span class="keywordtype">char</span> n[MAXBUF];
-00919 strlcpy(t,tag.c_str(),MAXBUF);
-00920 strlcpy(n,name.c_str(),MAXBUF);
-00921 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00922 <span class="keywordflow">if</span> (!res)
-00923 {
-00924 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00925 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00926 }
-00927 std::string s = val;
-00928 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
-00929 }
-00930
-<a name="l00931"></a><a class="code" href="classConfigReader.html#a5">00931</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
-00932 {
-00933 <span class="keywordtype">char</span> val[MAXBUF];
-00934 <span class="keywordtype">char</span> t[MAXBUF];
-00935 <span class="keywordtype">char</span> n[MAXBUF];
-00936 strlcpy(t,tag.c_str(),MAXBUF);
-00937 strlcpy(n,name.c_str(),MAXBUF);
-00938 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00939 <span class="keywordflow">if</span> (!res)
-00940 {
-00941 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00942 <span class="keywordflow">return</span> 0;
-00943 }
-00944 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
-00945 {
-00946 <span class="keywordflow">if</span> (!isdigit(val[i]))
-00947 {
-00948 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>;
-00949 <span class="keywordflow">return</span> 0;
-00950 }
-00951 }
-00952 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
-00953 {
-00954 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>;
-00955 <span class="keywordflow">return</span> 0;
-00956 }
-00957 <span class="keywordflow">return</span> atoi(val);
-00958 }
-00959
-<a name="l00960"></a><a class="code" href="classConfigReader.html#a6">00960</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>()
-00961 {
-00962 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#p3">error</a>;
-00963 this-&gt;error = 0;
-00964 <span class="keywordflow">return</span> olderr;
-00965 }
-00966
-<a name="l00967"></a><a class="code" href="classConfigReader.html#a9">00967</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
-00968 {
-00969 <span class="keywordflow">if</span> (bail)
-00970 {
-00971 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;str().c_str());
-00972 exit(0);
+00891 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#p3">error</a>;
+00892 this-&gt;error = 0;
+00893 <span class="keywordflow">return</span> olderr;
+00894 }
+00895
+<a name="l00896"></a><a class="code" href="classConfigReader.html#a9">00896</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
+00897 {
+00898 <span class="keywordflow">if</span> (bail)
+00899 {
+00900 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;str().c_str());
+00901 exit(0);
+00902 }
+00903 <span class="keywordflow">else</span>
+00904 {
+00905 <span class="keywordtype">char</span> dataline[1024];
+00906 <span class="keywordflow">if</span> (user)
+00907 {
+00908 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00909 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
+00910 {
+00911 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
+00912 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,dataline);
+00913 }
+00914 }
+00915 <span class="keywordflow">else</span>
+00916 {
+00917 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00918 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
+00919 {
+00920 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
+00921 WriteOpers(dataline);
+00922 }
+00923 }
+00924 <span class="keywordflow">return</span>;
+00925 }
+00926 }
+00927
+00928
+<a name="l00929"></a><a class="code" href="classConfigReader.html#a7">00929</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag)
+00930 {
+00931 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str());
+00932 }
+00933
+<a name="l00934"></a><a class="code" href="classConfigReader.html#a10">00934</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index)
+00935 {
+00936 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index);
+00937 }
+00938
+<a name="l00939"></a><a class="code" href="classConfigReader.html#a8">00939</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>()
+00940 {
+00941 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>;
+00942 }
+00943
+00944
+<a name="l00945"></a><a class="code" href="classFileReader.html#a1">00945</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
+00946 {
+00947 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
+00948 readfile(c,filename.c_str());
+00949 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
+00950 }
+00951
+<a name="l00952"></a><a class="code" href="classFileReader.html#a0">00952</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
+00953 {
+00954 }
+00955
+<a name="l00956"></a><a class="code" href="classFileReader.html#a3">00956</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
+00957 {
+00958 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
+00959 readfile(c,filename.c_str());
+00960 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
+00961 }
+00962
+00963
+<a name="l00964"></a><a class="code" href="classFileReader.html#a2">00964</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
+00965 {
+00966 }
+00967
+<a name="l00968"></a><a class="code" href="classFileReader.html#a4">00968</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
+00969 {
+00970 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0)
+00971 {
+00972 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
00973 }
00974 <span class="keywordflow">else</span>
00975 {
-00976 <span class="keywordtype">char</span> dataline[1024];
-00977 <span class="keywordflow">if</span> (user)
-00978 {
-00979 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00980 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
-00981 {
-00982 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
-00983 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,dataline);
-00984 }
-00985 }
-00986 <span class="keywordflow">else</span>
-00987 {
-00988 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00989 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
-00990 {
-00991 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
-00992 WriteOpers(dataline);
-00993 }
-00994 }
-00995 <span class="keywordflow">return</span>;
-00996 }
-00997 }
+00976 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+00977 }
+00978 }
+00979
+<a name="l00980"></a><a class="code" href="classFileReader.html#a5">00980</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
+00981 {
+00982 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#r0">fc</a>.size()))
+00983 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00984 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x];
+00985 }
+00986
+<a name="l00987"></a><a class="code" href="classFileReader.html#a6">00987</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
+00988 {
+00989 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size();
+00990 }
+00991
+00992
+00993 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a60">modules</a>(255);
+00994 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a61">factory</a>(255);
+00995
+<a name="l00996"></a><a class="code" href="modules_8cpp.html#a0">00996</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1;
+00997
00998
-00999
-<a name="l01000"></a><a class="code" href="classConfigReader.html#a7">01000</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag)
-01001 {
-01002 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str());
-01003 }
-01004
-<a name="l01005"></a><a class="code" href="classConfigReader.html#a10">01005</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index)
-01006 {
-01007 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index);
-01008 }
-01009
-<a name="l01010"></a><a class="code" href="classConfigReader.html#a8">01010</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>()
-01011 {
-01012 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>;
-01013 }
-01014
-01015
-<a name="l01016"></a><a class="code" href="classFileReader.html#a1">01016</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
-01017 {
-01018 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
-01019 readfile(c,filename.c_str());
-01020 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
-01021 }
-01022
-<a name="l01023"></a><a class="code" href="classFileReader.html#a0">01023</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
-01024 {
-01025 }
-01026
-<a name="l01027"></a><a class="code" href="classFileReader.html#a3">01027</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
-01028 {
-01029 <a class="code" href="modules_8h.html#a31">file_cache</a> c;
-01030 readfile(c,filename.c_str());
-01031 this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
-01032 }
-01033
-01034
-<a name="l01035"></a><a class="code" href="classFileReader.html#a2">01035</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
-01036 {
-01037 }
-01038
-<a name="l01039"></a><a class="code" href="classFileReader.html#a4">01039</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
-01040 {
-01041 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0)
-01042 {
-01043 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-01044 }
-01045 <span class="keywordflow">else</span>
-01046 {
-01047 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-01048 }
-01049 }
-01050
-<a name="l01051"></a><a class="code" href="classFileReader.html#a5">01051</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
-01052 {
-01053 <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#r0">fc</a>.size()))
-01054 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-01055 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x];
-01056 }
-01057
-<a name="l01058"></a><a class="code" href="classFileReader.html#a6">01058</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
-01059 {
-01060 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size();
-01061 }
-01062
-01063
-01064 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a61">modules</a>(255);
-01065 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a62">factory</a>(255);
-01066
-<a name="l01067"></a><a class="code" href="modules_8cpp.html#a1">01067</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1;
-01068
-01069
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri May 13 15:48:41 2005 for InspIRCd by
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun May 15 17:02:06 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
</a>1.3.3 </small></address>