diff options
Diffstat (limited to 'docs/module-doc/modules_8cpp-source.html')
-rw-r--r-- | docs/module-doc/modules_8cpp-source.html | 1971 |
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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div> +<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File 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 <unistd.h></span> -00022 <span class="preprocessor">#include <fcntl.h></span> -00023 <span class="preprocessor">#include <sys/errno.h></span> -00024 <span class="preprocessor">#include <sys/ioctl.h></span> -00025 <span class="preprocessor">#include <sys/utsname.h></span> -00026 <span class="preprocessor">#ifdef USE_KQUEUE</span> -00027 <span class="preprocessor"></span><span class="preprocessor">#include <sys/types.h></span> -00028 <span class="preprocessor">#include <sys/event.h></span> -00029 <span class="preprocessor">#include <sys/time.h></span> -00030 <span class="preprocessor">#endif</span> -00031 <span class="preprocessor"></span><span class="preprocessor">#include <cstdio></span> -00032 <span class="preprocessor">#include <time.h></span> -00033 <span class="preprocessor">#include <string></span> -00034 <span class="preprocessor">#ifdef GCC3</span> -00035 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span> -00036 <span class="preprocessor">#else</span> -00037 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span> -00038 <span class="preprocessor">#endif</span> -00039 <span class="preprocessor"></span><span class="preprocessor">#include <map></span> -00040 <span class="preprocessor">#include <sstream></span> -00041 <span class="preprocessor">#include <vector></span> -00042 <span class="preprocessor">#include <errno.h></span> -00043 <span class="preprocessor">#include <deque></span> -00044 <span class="preprocessor">#include <errno.h></span> -00045 <span class="preprocessor">#include <unistd.h></span> -00046 <span class="preprocessor">#include <sched.h></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<Module*> <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<ircd_module*> <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 <sys/errno.h></span> +00023 <span class="preprocessor">#ifdef USE_KQUEUE</span> +00024 <span class="preprocessor"></span><span class="preprocessor">#include <sys/types.h></span> +00025 <span class="preprocessor">#include <sys/event.h></span> +00026 <span class="preprocessor">#include <sys/time.h></span> +00027 <span class="preprocessor">#endif</span> +00028 <span class="preprocessor"></span><span class="preprocessor">#include <time.h></span> +00029 <span class="preprocessor">#include <string></span> +00030 <span class="preprocessor">#ifdef GCC3</span> +00031 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span> +00032 <span class="preprocessor">#else</span> +00033 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span> +00034 <span class="preprocessor">#endif</span> +00035 <span class="preprocessor"></span><span class="preprocessor">#include <map></span> +00036 <span class="preprocessor">#include <sstream></span> +00037 <span class="preprocessor">#include <vector></span> +00038 <span class="preprocessor">#include <deque></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<Module*> <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<ircd_module*> <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<int> <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<std::string> <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<long> <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<int> <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<std::string> <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<long> <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<std::string, userrec*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <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<std::string, chanrec*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <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<in_addr,string*, nspace::hash<in_addr>, <a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>> <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<std::string, WhoWasUser*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <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<command_t> <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><> <span class="keyword">struct </span>hash<in_addr> -00125 #else -<a name="l00126"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html">00126</a> template<> struct <a class="code" href="channels_8cpp.html#a0">nspace</a>::hash<in_addr> -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 &a)<span class="keyword"> const</span> -00130 <span class="keyword"> </span>{ -00131 size_t q; -00132 memcpy(&q,&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><> <span class="keyword">struct </span>hash<string> -00138 #else -<a name="l00139"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html">00139</a> template<> struct <a class="code" href="channels_8cpp.html#a0">nspace</a>::hash<string> -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 &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<const char *> 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& s1, <span class="keyword">const</span> string& 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 &s1, <span class="keyword">const</span> in_addr &s2)<span class="keyword"> const</span> -00172 <span class="keyword"> </span>{ -00173 size_t q; -00174 size_t p; -00175 -00176 memcpy(&q,&s1,<span class="keyword">sizeof</span>(size_t)); -00177 memcpy(&p,&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<ExtMode> <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 < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) +00149 { +00150 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->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 < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) +00161 { +00162 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->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 < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) +00173 { +00174 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->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<std::string, userrec*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <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<std::string, chanrec*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <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<in_addr,string*, nspace::hash<in_addr>, <a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>> <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<std::string, WhoWasUser*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <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<command_t> <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<ExtMode> <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 < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) +00186 { +00187 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00188 { +00189 <span class="keywordflow">return</span> i->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 < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) +00199 { +00200 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00201 { +00202 <span class="keywordflow">return</span> i->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 < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) -00225 { -00226 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->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 < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) +00222 { +00223 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>)) +00224 { +00225 i->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 < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) -00237 { -00238 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->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 < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) -00249 { -00250 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->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 < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) -00262 { -00263 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00264 { -00265 <span class="keywordflow">return</span> i->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-><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-><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-><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-><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>-><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 < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) -00275 { -00276 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00277 { -00278 <span class="keywordflow">return</span> i->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 < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) -00298 { -00299 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>)) -00300 { -00301 i->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-><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-><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-><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-><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>-><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-><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-><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-><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-><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-><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 &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 &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 &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 &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 &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 &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 &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> &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-><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 &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 &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 &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 &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 &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 &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 &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> &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<char*> *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-><a class="code" href="classchanrec.html#a7">GetUsers</a>(); +00396 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>->begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>->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-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this->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<char*> *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-><a class="code" href="classchanrec.html#a7">GetUsers</a>(); -00472 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>->begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>->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-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this->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 < 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 >= <span class="charliteral">'A'</span>) && (modechar <= 'Z')) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <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>0) || (params_when_off>0)) && (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>1) || (params_when_off>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-><a class="code" href="classconnection.html#o0">fd</a>; -00684 user-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; -00685 user-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); -00686 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#o1">ident</a>,user-><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(&ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); -00690 <span class="keywordtype">int</span> i = kevent(kq, &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-><a class="code" href="classconnection.html#o0">fd</a> = alive-><a class="code" href="classconnection.html#o0">fd</a>; -00703 alive-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; -00704 alive-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); -00705 Write(zombie-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#o0">nick</a>,alive-><a class="code" href="classuserrec.html#o1">ident</a>,alive-><a class="code" href="classconnection.html#o1">host</a>,zombie-><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-><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->chans[i].channel != NULL) -00711 { -00712 <span class="keywordflow">if</span> (zombie->chans[i].channel->name) -00713 { -00714 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>; -00715 WriteFrom(zombie->fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#o0">name</a>); -00716 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#o5">topicset</a>) -00717 { -00718 WriteServ(zombie->fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o3">topic</a>); -00719 WriteServ(zombie->fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o6">setby</a>, Ptr-><a class="code" href="classchanrec.html#o5">topicset</a>); -00720 } -00721 userlist(zombie,Ptr); -00722 WriteServ(zombie->fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie->nick, Ptr-><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 < 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 >= <span class="charliteral">'A'</span>) && (modechar <= 'Z')) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <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>0) || (params_when_off>0)) && (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>1) || (params_when_off>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-><a class="code" href="classconnection.html#o0">fd</a>; +00613 user-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; +00614 user-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); +00615 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#o1">ident</a>,user-><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(&ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); +00619 <span class="keywordtype">int</span> i = kevent(kq, &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-><a class="code" href="classconnection.html#o0">fd</a> = alive-><a class="code" href="classconnection.html#o0">fd</a>; +00632 alive-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; +00633 alive-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); +00634 Write(zombie-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#o0">nick</a>,alive-><a class="code" href="classuserrec.html#o1">ident</a>,alive-><a class="code" href="classconnection.html#o1">host</a>,zombie-><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-><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->chans[i].channel != NULL) +00640 { +00641 <span class="keywordflow">if</span> (zombie->chans[i].channel->name) +00642 { +00643 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>; +00644 WriteFrom(zombie->fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#o0">name</a>); +00645 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#o5">topicset</a>) +00646 { +00647 WriteServ(zombie->fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o3">topic</a>); +00648 WriteServ(zombie->fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o6">setby</a>, Ptr-><a class="code" href="classchanrec.html#o5">topicset</a>); +00649 } +00650 userlist(zombie,Ptr); +00651 WriteServ(zombie->fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie->nick, Ptr-><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 < strlen(dest); i++) +00722 <span class="keywordflow">if</span> (dest[i] < 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 < strlen(dest); i++) +00725 <span class="keywordflow">if</span> (dest[i] > 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 < strlen(dest); i++) +00729 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>) +00730 c++; +00731 <span class="keywordflow">if</span> (c>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 < strlen(dest); i++) +00735 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>) +00736 c++; +00737 <span class="keywordflow">if</span> (c>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 < strlen(dest); i++) -00793 <span class="keywordflow">if</span> (dest[i] < 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 < strlen(dest); i++) -00796 <span class="keywordflow">if</span> (dest[i] > 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 < strlen(dest); i++) -00800 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>) -00801 c++; -00802 <span class="keywordflow">if</span> (c>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 < strlen(dest); i++) -00806 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>) -00807 c++; -00808 <span class="keywordflow">if</span> (c>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 <= <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-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00802 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00803 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this->cache,this->errorlog); +00804 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) +00805 this-><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-><a class="code" href="classConfigReader.html#p0">cache</a>) +00812 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p0">cache</a>; +00813 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p1">errorlog</a>) +00814 <span class="keyword">delete</span> this-><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-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00821 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00822 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#p0">cache</a>,this-><a class="code" href="classConfigReader.html#p1">errorlog</a>); +00823 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) +00824 this-><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-><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 <= <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-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00873 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00874 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this->cache,this->errorlog); -00875 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) -00876 this-><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-><a class="code" href="classConfigReader.html#p0">cache</a>) -00883 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p0">cache</a>; -00884 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p1">errorlog</a>) -00885 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p1">errorlog</a>; -00886 } -00887 +00853 this-><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-><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 < strlen(val); i++) +00874 { +00875 <span class="keywordflow">if</span> (!isdigit(val[i])) +00876 { +00877 this-><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) && (atoi(val)<0)) +00882 { +00883 this-><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-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00892 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00893 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#p0">cache</a>,this-><a class="code" href="classConfigReader.html#p1">errorlog</a>); -00894 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) -00895 this-><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-><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-><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-><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 < strlen(val); i++) -00945 { -00946 <span class="keywordflow">if</span> (!isdigit(val[i])) -00947 { -00948 this-><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) && (atoi(val)<0)) -00953 { -00954 this-><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-><a class="code" href="classConfigReader.html#p3">error</a>; -00963 this->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>->str().c_str()); -00972 exit(0); +00891 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#p3">error</a>; +00892 this->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>->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-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); +00909 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) +00910 { +00911 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); +00912 WriteServ(user-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><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-><a class="code" href="classuserrec.html#o0">nick</a>); +00918 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) +00919 { +00920 <a class="code" href="classConfigReader.html#p1">errorlog</a>->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-><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-><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-><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-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); -00980 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) -00981 { -00982 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); -00983 WriteServ(user-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><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-><a class="code" href="classuserrec.html#o0">nick</a>); -00989 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) -00990 { -00991 <a class="code" href="classConfigReader.html#p1">errorlog</a>->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<0) || (x><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<Module*> <a class="code" href="modules_8cpp.html#a60">modules</a>(255); +00994 std::vector<ircd_module*> <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-><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-><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-><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<0) || (x><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<Module*> <a class="code" href="modules_8cpp.html#a61">modules</a>(255); -01065 std::vector<ircd_module*> <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> |