]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/modules_8cpp-source.html
Fixed 'fake direction' messages being put out by user->registered = 7 being set too...
[user/henk/code/inspircd.git] / docs / module-doc / modules_8cpp-source.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>InspIRCd: modules.cpp Source File</title>
4 <link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.4.4-20050815 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8 <div class="nav">
9 <a class="el" href="dir_000000.html">home</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">brain</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000002.html">inspircd-cvs</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000003.html">inspircd</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000005.html">src</a></div>
10 <h1>modules.cpp</h1><a href="modules_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*       +------------------------------------+</span>
11 <a name="l00002"></a>00002 <span class="comment"> *       | Inspire Internet Relay Chat Daemon |</span>
12 <a name="l00003"></a>00003 <span class="comment"> *       +------------------------------------+</span>
13 <a name="l00004"></a>00004 <span class="comment"> *</span>
14 <a name="l00005"></a>00005 <span class="comment"> *  Inspire is copyright (C) 2002-2004 ChatSpike-Dev.</span>
15 <a name="l00006"></a>00006 <span class="comment"> *                       E-mail:</span>
16 <a name="l00007"></a>00007 <span class="comment"> *                &lt;brain@chatspike.net&gt;</span>
17 <a name="l00008"></a>00008 <span class="comment"> *                &lt;Craig@chatspike.net&gt;</span>
18 <a name="l00009"></a>00009 <span class="comment"> *     </span>
19 <a name="l00010"></a>00010 <span class="comment"> * Written by Craig Edwards, Craig McLure, and others.</span>
20 <a name="l00011"></a>00011 <span class="comment"> * This program is free but copyrighted software; see</span>
21 <a name="l00012"></a>00012 <span class="comment"> *            the file COPYING for details.</span>
22 <a name="l00013"></a>00013 <span class="comment"> *</span>
23 <a name="l00014"></a>00014 <span class="comment"> * ---------------------------------------------------</span>
24 <a name="l00015"></a>00015 <span class="comment"> */</span>
25 <a name="l00016"></a>00016 
26 <a name="l00017"></a>00017 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
27 <a name="l00018"></a>00018 
28 <a name="l00019"></a>00019 <span class="preprocessor">#include "inspircd_config.h"</span>
29 <a name="l00020"></a>00020 <span class="preprocessor">#include "inspircd.h"</span>
30 <a name="l00021"></a>00021 <span class="preprocessor">#include "inspircd_io.h"</span>
31 <a name="l00022"></a>00022 <span class="preprocessor">#include "inspircd_util.h"</span>
32 <a name="l00023"></a>00023 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
33 <a name="l00024"></a>00024 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
34 <a name="l00025"></a>00025 
35 <a name="l00026"></a>00026 <span class="preprocessor">#ifdef USE_KQUEUE</span>
36 <a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/types.h&gt;</span>
37 <a name="l00028"></a>00028 <span class="preprocessor">#include &lt;sys/event.h&gt;</span>
38 <a name="l00029"></a>00029 <span class="preprocessor">#include &lt;sys/time.h&gt;</span>
39 <a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
40 <a name="l00031"></a>00031 <span class="preprocessor"></span>
41 <a name="l00032"></a>00032 <span class="preprocessor">#ifdef USE_EPOLL</span>
42 <a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/epoll.h&gt;</span>
43 <a name="l00034"></a>00034 <span class="preprocessor">#endif</span>
44 <a name="l00035"></a>00035 <span class="preprocessor"></span>
45 <a name="l00036"></a>00036 <span class="preprocessor">#include &lt;time.h&gt;</span>
46 <a name="l00037"></a>00037 <span class="preprocessor">#include &lt;string&gt;</span>
47 <a name="l00038"></a>00038 <span class="preprocessor">#ifdef GCC3</span>
48 <a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
49 <a name="l00040"></a>00040 <span class="preprocessor">#else</span>
50 <a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
51 <a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
52 <a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
53 <a name="l00044"></a>00044 <span class="preprocessor">#include &lt;sstream&gt;</span>
54 <a name="l00045"></a>00045 <span class="preprocessor">#include &lt;vector&gt;</span>
55 <a name="l00046"></a>00046 <span class="preprocessor">#include &lt;deque&gt;</span>
56 <a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
57 <a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
58 <a name="l00049"></a>00049 <span class="preprocessor">#include "globals.h"</span>
59 <a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
60 <a name="l00051"></a>00051 <span class="preprocessor">#include "dynamic.h"</span>
61 <a name="l00052"></a>00052 <span class="preprocessor">#include "wildcard.h"</span>
62 <a name="l00053"></a>00053 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
63 <a name="l00054"></a>00054 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
64 <a name="l00055"></a>00055 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
65 <a name="l00056"></a>00056 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
66 <a name="l00057"></a>00057 <span class="preprocessor">#include "inspstring.h"</span>
67 <a name="l00058"></a>00058 <span class="preprocessor">#include "helperfuncs.h"</span>
68 <a name="l00059"></a>00059 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
69 <a name="l00060"></a>00060 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
70 <a name="l00061"></a>00061 
71 <a name="l00062"></a>00062 <span class="preprocessor">#ifdef USE_KQUEUE</span>
72 <a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">int</span> kq;
73 <a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
74 <a name="l00065"></a>00065 <span class="preprocessor"></span>
75 <a name="l00066"></a>00066 <span class="preprocessor">#ifdef USE_EPOLL</span>
76 <a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keywordtype">int</span> ep;
77 <a name="l00068"></a>00068 <span class="preprocessor">#endif</span>
78 <a name="l00069"></a>00069 <span class="preprocessor"></span>
79 <a name="l00070"></a>00070 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
80 <a name="l00071"></a>00071 <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>;
81 <a name="l00072"></a>00072 <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>;
82 <a name="l00073"></a>00073 
83 <a name="l00074"></a>00074 <span class="keyword">extern</span> std::vector&lt;std::string&gt; <a class="code" href="modules_8cpp.html#include_5Fstack">include_stack</a>;
84 <a name="l00075"></a>00075 
85 <a name="l00076"></a>00076 <span class="keyword">extern</span> std::vector&lt;InspSocket*&gt; <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>;
86 <a name="l00077"></a>00077 
87 <a name="l00078"></a>00078 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
88 <a name="l00079"></a>00079 
89 <a name="l00080"></a>00080 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#LogLevel">LogLevel</a>;
90 <a name="l00081"></a>00081 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#ServerName_5BMAXBUF_5D">ServerName</a>[MAXBUF];
91 <a name="l00082"></a>00082 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#Network_5BMAXBUF_5D">Network</a>[MAXBUF];
92 <a name="l00083"></a>00083 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>[MAXBUF];
93 <a name="l00084"></a>00084 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#AdminName_5BMAXBUF_5D">AdminName</a>[MAXBUF];
94 <a name="l00085"></a>00085 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>[MAXBUF];
95 <a name="l00086"></a>00086 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#AdminNick_5BMAXBUF_5D">AdminNick</a>[MAXBUF];
96 <a name="l00087"></a>00087 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#diepass_5BMAXBUF_5D">diepass</a>[MAXBUF];
97 <a name="l00088"></a>00088 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#restartpass_5BMAXBUF_5D">restartpass</a>[MAXBUF];
98 <a name="l00089"></a>00089 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#motd_5BMAXBUF_5D">motd</a>[MAXBUF];
99 <a name="l00090"></a>00090 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#rules_5BMAXBUF_5D">rules</a>[MAXBUF];
100 <a name="l00091"></a>00091 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#list_5BMAXBUF_5D">list</a>[MAXBUF];
101 <a name="l00092"></a>00092 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#PrefixQuit_5BMAXBUF_5D">PrefixQuit</a>[MAXBUF];
102 <a name="l00093"></a>00093 <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#DieValue_5BMAXBUF_5D">DieValue</a>[MAXBUF];
103 <a name="l00094"></a>00094 
104 <a name="l00095"></a>00095 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#debugging">debugging</a>;
105 <a name="l00096"></a>00096 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
106 <a name="l00097"></a>00097 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
107 <a name="l00098"></a>00098 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#DieDelay">DieDelay</a>;
108 <a name="l00099"></a>00099 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#startup_5Ftime">startup_time</a>;
109 <a name="l00100"></a>00100 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#NetBufferSize">NetBufferSize</a>;
110 <a name="l00101"></a>00101 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MaxWhoResults">MaxWhoResults</a>;
111 <a name="l00102"></a>00102 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#nb_5Fstart">nb_start</a>;
112 <a name="l00103"></a>00103 
113 <a name="l00104"></a>00104 <span class="keyword">extern</span> std::vector&lt;std::string&gt; <a class="code" href="channels_8cpp.html#module_5Fnames">module_names</a>;
114 <a name="l00105"></a>00105 
115 <a name="l00106"></a>00106 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#boundPortCount">boundPortCount</a>;
116 <a name="l00107"></a>00107 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#portCount">portCount</a>;
117 <a name="l00108"></a>00108 
118 <a name="l00109"></a>00109 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#ports_5BMAXSOCKS_5D">ports</a>[MAXSOCKS];
119 <a name="l00110"></a>00110 
120 <a name="l00111"></a>00111 
121 <a name="l00112"></a>00112 
122 <a name="l00113"></a>00113 <span class="keyword">extern</span> std::stringstream <a class="code" href="channels_8cpp.html#config_5Ff">config_f</a>;
123 <a name="l00114"></a>00114 
124 <a name="l00115"></a>00115 
125 <a name="l00116"></a>00116 
126 <a name="l00117"></a>00117 <span class="keyword">extern</span> FILE *<a class="code" href="channels_8cpp.html#log_5Ffile">log_file</a>;
127 <a name="l00118"></a>00118 
128 <a name="l00119"></a>00119 <span class="keyword">extern</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536];
129 <a name="l00120"></a>00120 
130 <a name="l00121"></a><a class="code" href="modules_8cpp.html#user_5Fhash">00121</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, userrec*, nspace::hash&lt;string&gt;, <a class="code" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#user_5Fhash">user_hash</a>;
131 <a name="l00122"></a><a class="code" href="modules_8cpp.html#chan_5Fhash">00122</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, chanrec*, nspace::hash&lt;string&gt;, <a class="code" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#chan_5Fhash">chan_hash</a>;
132 <a name="l00123"></a><a class="code" href="modules_8cpp.html#address_5Fcache">00123</a> <span class="keyword">typedef</span> nspace::hash_map&lt;in_addr,string*, nspace::hash&lt;in_addr&gt;, <a class="code" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a>&gt; <a class="code" href="modules_8cpp.html#address_5Fcache">address_cache</a>;
133 <a name="l00124"></a><a class="code" href="modules_8cpp.html#whowas_5Fhash">00124</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, WhoWasUser*, nspace::hash&lt;string&gt;, <a class="code" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#whowas_5Fhash">whowas_hash</a>;
134 <a name="l00125"></a><a class="code" href="modules_8cpp.html#command_5Ftable">00125</a> <span class="keyword">typedef</span> std::deque&lt;command_t&gt; <a class="code" href="modules_8cpp.html#command_5Ftable">command_table</a>;
135 <a name="l00126"></a>00126 
136 <a name="l00127"></a>00127 
137 <a name="l00128"></a>00128 <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
138 <a name="l00129"></a>00129 <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#chan_5Fhash">chan_hash</a> <a class="code" href="modules_8cpp.html#chanlist">chanlist</a>;
139 <a name="l00130"></a>00130 <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#whowas_5Fhash">whowas_hash</a> <a class="code" href="modules_8cpp.html#whowas">whowas</a>;
140 <a name="l00131"></a>00131 <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#command_5Ftable">command_table</a> <a class="code" href="modules_8cpp.html#cmdlist">cmdlist</a>;
141 <a name="l00132"></a>00132 <span class="keyword">extern</span> <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> <a class="code" href="modules_8cpp.html#MOTD">MOTD</a>;
142 <a name="l00133"></a>00133 <span class="keyword">extern</span> <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> <a class="code" href="modules_8cpp.html#RULES">RULES</a>;
143 <a name="l00134"></a>00134 <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#address_5Fcache">address_cache</a> <a class="code" href="modules_8cpp.html#IP">IP</a>;
144 <a name="l00135"></a>00135 
145 <a name="l00136"></a>00136 
146 <a name="l00137"></a>00137 <span class="comment">// class type for holding an extended mode character - internal to core</span>
147 <a name="l00138"></a>00138 
148 <a name="l00139"></a><a class="code" href="classExtMode.html">00139</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>
149 <a name="l00140"></a>00140 {
150 <a name="l00141"></a>00141 <span class="keyword">public</span>:
151 <a name="l00142"></a><a class="code" href="classExtMode.html#modechar">00142</a>         <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#modechar">modechar</a>;
152 <a name="l00143"></a><a class="code" href="classExtMode.html#type">00143</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#type">type</a>;
153 <a name="l00144"></a><a class="code" href="classExtMode.html#needsoper">00144</a>         <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#needsoper">needsoper</a>;
154 <a name="l00145"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Fon">00145</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>;
155 <a name="l00146"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Foff">00146</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>;
156 <a name="l00147"></a><a class="code" href="classExtMode.html#list">00147</a>         <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#list">list</a>;
157 <a name="l00148"></a><a class="code" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">00148</a>         <a class="code" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">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#modechar">modechar</a>(mc), <a class="code" href="classExtMode.html#type">type</a>(ty), <a class="code" href="classExtMode.html#needsoper">needsoper</a>(oper), <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>(p_off) { };
158 <a name="l00149"></a>00149 };                                     
159 <a name="l00150"></a>00150 
160 <a name="l00151"></a><a class="code" href="modules_8cpp.html#ExtModeList">00151</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="modules_8cpp.html#ExtModeList">ExtModeList</a>;
161 <a name="l00152"></a><a class="code" href="modules_8cpp.html#ExtModeListIter">00152</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a>;
162 <a name="l00153"></a>00153 
163 <a name="l00154"></a>00154 
164 <a name="l00155"></a><a class="code" href="modules_8cpp.html#EMode">00155</a> <a class="code" href="modules_8cpp.html#ExtModeList">ExtModeList</a> <a class="code" href="modules_8cpp.html#EMode">EMode</a>;
165 <a name="l00156"></a>00156 
166 <a name="l00157"></a>00157 <span class="comment">// returns true if an extended mode character is in use</span>
167 <a name="l00158"></a><a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">00158</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
168 <a name="l00159"></a>00159 {
169 <a name="l00160"></a>00160         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
170 <a name="l00161"></a>00161         {
171 <a name="l00162"></a>00162                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
172 <a name="l00163"></a>00163                 {
173 <a name="l00164"></a>00164                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
174 <a name="l00165"></a>00165                 }
175 <a name="l00166"></a>00166         }
176 <a name="l00167"></a>00167         <span class="keywordflow">return</span> <span class="keyword">false</span>;
177 <a name="l00168"></a>00168 }
178 <a name="l00169"></a>00169 
179 <a name="l00170"></a><a class="code" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">00170</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
180 <a name="l00171"></a>00171 {
181 <a name="l00172"></a>00172         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
182 <a name="l00173"></a>00173         {
183 <a name="l00174"></a>00174                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;list == <span class="keyword">true</span>))
184 <a name="l00175"></a>00175                 {
185 <a name="l00176"></a>00176                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
186 <a name="l00177"></a>00177                 }
187 <a name="l00178"></a>00178         }
188 <a name="l00179"></a>00179         <span class="keywordflow">return</span> <span class="keyword">false</span>;
189 <a name="l00180"></a>00180 }
190 <a name="l00181"></a>00181 
191 <a name="l00182"></a><a class="code" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">00182</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
192 <a name="l00183"></a>00183 {
193 <a name="l00184"></a>00184         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
194 <a name="l00185"></a>00185         {
195 <a name="l00186"></a>00186                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;needsoper == <span class="keyword">true</span>))
196 <a name="l00187"></a>00187                 {
197 <a name="l00188"></a>00188                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
198 <a name="l00189"></a>00189                 }
199 <a name="l00190"></a>00190         }
200 <a name="l00191"></a>00191         <span class="keywordflow">return</span> <span class="keyword">false</span>;
201 <a name="l00192"></a>00192 }
202 <a name="l00193"></a>00193 
203 <a name="l00194"></a>00194 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
204 <a name="l00195"></a><a class="code" href="modules_8cpp.html#ModeDefinedOn_28char_20modechar_2C_20int_20type_29">00195</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOn_28char_20modechar_2C_20int_20type_29">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
205 <a name="l00196"></a>00196 {
206 <a name="l00197"></a>00197         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
207 <a name="l00198"></a>00198         {
208 <a name="l00199"></a>00199                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
209 <a name="l00200"></a>00200                 {
210 <a name="l00201"></a>00201                         <span class="keywordflow">return</span> i-&gt;params_when_on;
211 <a name="l00202"></a>00202                 }
212 <a name="l00203"></a>00203         }
213 <a name="l00204"></a>00204         <span class="keywordflow">return</span> 0;
214 <a name="l00205"></a>00205 }
215 <a name="l00206"></a>00206 
216 <a name="l00207"></a>00207 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
217 <a name="l00208"></a><a class="code" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">00208</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
218 <a name="l00209"></a>00209 {
219 <a name="l00210"></a>00210         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
220 <a name="l00211"></a>00211         {
221 <a name="l00212"></a>00212                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
222 <a name="l00213"></a>00213                 {
223 <a name="l00214"></a>00214                         <span class="keywordflow">return</span> i-&gt;params_when_off;
224 <a name="l00215"></a>00215                 }
225 <a name="l00216"></a>00216         }
226 <a name="l00217"></a>00217         <span class="keywordflow">return</span> 0;
227 <a name="l00218"></a>00218 }
228 <a name="l00219"></a>00219 
229 <a name="l00220"></a>00220 <span class="comment">// returns true if an extended mode character is in use</span>
230 <a name="l00221"></a><a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">00221</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(<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)
231 <a name="l00222"></a>00222 {
232 <a name="l00223"></a>00223         <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
233 <a name="l00224"></a>00224                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
234 <a name="l00225"></a>00225         }
235 <a name="l00226"></a>00226         <a class="code" href="modules_8cpp.html#EMode">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
236 <a name="l00227"></a>00227         <span class="keywordflow">return</span> <span class="keyword">true</span>;
237 <a name="l00228"></a>00228 }
238 <a name="l00229"></a>00229 
239 <a name="l00230"></a>00230 <span class="comment">// turns a mode into a listmode</span>
240 <a name="l00231"></a><a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">00231</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
241 <a name="l00232"></a>00232 {
242 <a name="l00233"></a>00233         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#ExtModeListIter">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#EMode">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#EMode">EMode</a>.end(); i++)
243 <a name="l00234"></a>00234         {
244 <a name="l00235"></a>00235                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == <a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>))
245 <a name="l00236"></a>00236                 {
246 <a name="l00237"></a>00237                         i-&gt;list = <span class="keyword">true</span>;
247 <a name="l00238"></a>00238                         <span class="keywordflow">return</span>;
248 <a name="l00239"></a>00239                 }
249 <a name="l00240"></a>00240         }
250 <a name="l00241"></a>00241         <span class="keywordflow">return</span>;
251 <a name="l00242"></a>00242 }
252 <a name="l00243"></a>00243 
253 <a name="l00244"></a>00244 <span class="comment">// version is a simple class for holding a modules version number</span>
254 <a name="l00245"></a>00245 
255 <a name="l00246"></a><a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">00246</a> <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">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) { };
256 <a name="l00247"></a>00247 
257 <a name="l00248"></a>00248 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
258 <a name="l00249"></a>00249 
259 <a name="l00250"></a><a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">00250</a> <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin::Admin</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name, <a class="code" href="namespaceirc.html#string">std::string</a> email, <a class="code" href="namespaceirc.html#string">std::string</a> nick) : Name(name), Email(email), Nick(nick) { };
260 <a name="l00251"></a>00251 
261 <a name="l00252"></a><a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">00252</a> <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">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) { };
262 <a name="l00253"></a>00253 
263 <a name="l00254"></a><a class="code" href="classRequest.html#GetData_28_29">00254</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">Request::GetData</a>()
264 <a name="l00255"></a>00255 {
265 <a name="l00256"></a>00256         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#data">data</a>;
266 <a name="l00257"></a>00257 }
267 <a name="l00258"></a>00258 
268 <a name="l00259"></a><a class="code" href="classRequest.html#GetSource_28_29">00259</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">Request::GetSource</a>()
269 <a name="l00260"></a>00260 {
270 <a name="l00261"></a>00261         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#source">source</a>;
271 <a name="l00262"></a>00262 }
272 <a name="l00263"></a>00263 
273 <a name="l00264"></a><a class="code" href="classRequest.html#GetDest_28_29">00264</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">Request::GetDest</a>()
274 <a name="l00265"></a>00265 {
275 <a name="l00266"></a>00266         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#dest">dest</a>;
276 <a name="l00267"></a>00267 }
277 <a name="l00268"></a>00268 
278 <a name="l00269"></a><a class="code" href="classRequest.html#Send_28_29">00269</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Request::Send</a>()
279 <a name="l00270"></a>00270 {
280 <a name="l00271"></a>00271         <span class="keywordflow">if</span> (this-&gt;dest)
281 <a name="l00272"></a>00272         {
282 <a name="l00273"></a>00273                 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#dest">dest</a>-&gt;<a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<span class="keyword">this</span>);
283 <a name="l00274"></a>00274         }
284 <a name="l00275"></a>00275         <span class="keywordflow">else</span>
285 <a name="l00276"></a>00276         {
286 <a name="l00277"></a>00277                 <span class="keywordflow">return</span> NULL;
287 <a name="l00278"></a>00278         }
288 <a name="l00279"></a>00279 }
289 <a name="l00280"></a>00280 
290 <a name="l00281"></a><a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">00281</a> <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="namespaceirc.html#string">std::string</a> eventid) : data(anydata), source(src), id(eventid) { };
291 <a name="l00282"></a>00282 
292 <a name="l00283"></a><a class="code" href="classEvent.html#GetData_28_29">00283</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">Event::GetData</a>()
293 <a name="l00284"></a>00284 {
294 <a name="l00285"></a>00285         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#data">data</a>;
295 <a name="l00286"></a>00286 }
296 <a name="l00287"></a>00287 
297 <a name="l00288"></a><a class="code" href="classEvent.html#GetSource_28_29">00288</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">Event::GetSource</a>()
298 <a name="l00289"></a>00289 {
299 <a name="l00290"></a>00290         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#source">source</a>;
300 <a name="l00291"></a>00291 }
301 <a name="l00292"></a>00292 
302 <a name="l00293"></a><a class="code" href="classEvent.html#Send_28_29">00293</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Event::Send</a>()
303 <a name="l00294"></a>00294 {
304 <a name="l00295"></a>00295         <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
305 <a name="l00296"></a>00296         <span class="keywordflow">return</span> NULL;
306 <a name="l00297"></a>00297 }
307 <a name="l00298"></a>00298 
308 <a name="l00299"></a><a class="code" href="classEvent.html#GetEventID_28_29">00299</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">Event::GetEventID</a>()
309 <a name="l00300"></a>00300 {
310 <a name="l00301"></a>00301         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#id">id</a>;
311 <a name="l00302"></a>00302 }
312 <a name="l00303"></a>00303 
313 <a name="l00304"></a>00304 
314 <a name="l00305"></a>00305 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
315 <a name="l00306"></a><a class="code" href="classModule.html#Module_28_29">00306</a>                 <a class="code" href="classModule.html#Module_28_29">Module::Module</a>() { }
316 <a name="l00307"></a><a class="code" href="classModule.html#_7EModule_28_29">00307</a>                 <a class="code" href="classModule.html#_7EModule_28_29">Module::~Module</a>() { }
317 <a name="l00308"></a><a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">00308</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
318 <a name="l00309"></a><a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_29">00309</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_29">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
319 <a name="l00310"></a><a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">00310</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
320 <a name="l00311"></a><a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00311</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
321 <a name="l00312"></a><a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00312</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
322 <a name="l00313"></a><a class="code" href="classModule.html#OnPacketTransmit_28std_3A_3Astring_20_26data_2C_20std_3A_3Astring_20serv_29">00313</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnPacketTransmit_28std_3A_3Astring_20_26data_2C_20std_3A_3Astring_20serv_29">Module::OnPacketTransmit</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;data, <a class="code" href="namespaceirc.html#string">std::string</a> serv) { }
323 <a name="l00314"></a><a class="code" href="classModule.html#OnPacketReceive_28std_3A_3Astring_20_26data_2C_20std_3A_3Astring_20serv_29">00314</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnPacketReceive_28std_3A_3Astring_20_26data_2C_20std_3A_3Astring_20serv_29">Module::OnPacketReceive</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;data, <a class="code" href="namespaceirc.html#string">std::string</a> serv) { }
324 <a name="l00315"></a><a class="code" href="classModule.html#OnRehash_28_29">00315</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnRehash_28_29">Module::OnRehash</a>() { }
325 <a name="l00316"></a><a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">00316</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">Module::OnServerRaw</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
326 <a name="l00317"></a><a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">00317</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">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; }
327 <a name="l00318"></a><a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">00318</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnExtendedMode_28userrec_20_2Auser_2C_20void_20_2Atarget_2C_20char_20modechar_2C_20int_20type_2C_20bool_20mode_5Fon_2C_20string_5Flist_20_26params_29">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, <a class="code" href="modules_8h.html#string_5Flist">string_list</a> &amp;params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
328 <a name="l00319"></a><a class="code" href="classModule.html#GetVersion_28_29">00319</a> <a class="code" href="classVersion.html">Version</a>         <a class="code" href="classModule.html#GetVersion_28_29">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#VF_5FVENDOR">VF_VENDOR</a>); }
329 <a name="l00320"></a><a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_29">00320</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_29">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
330 <a name="l00321"></a><a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">00321</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
331 <a name="l00322"></a><a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">00322</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
332 <a name="l00323"></a><a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00323</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">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; };
333 <a name="l00324"></a><a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">00324</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnUserPreMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">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, <a class="code" href="namespaceirc.html#string">std::string</a> &amp;text) { <span class="keywordflow">return</span> 0; };
334 <a name="l00325"></a><a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">00325</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnUserPreNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20_26text_29">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, <a class="code" href="namespaceirc.html#string">std::string</a> &amp;text) { <span class="keywordflow">return</span> 0; };
335 <a name="l00326"></a><a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">00326</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick) { <span class="keywordflow">return</span> 0; };
336 <a name="l00327"></a><a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">00327</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick) { };
337 <a name="l00328"></a><a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">00328</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">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#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
338 <a name="l00329"></a><a class="code" href="classModule.html#OnUserSync_28userrec_20_2Auser_29">00329</a> <a class="code" href="modules_8h.html#string_5Flist">string_list</a>     <a class="code" href="classModule.html#OnUserSync_28userrec_20_2Auser_29">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#string_5Flist">string_list</a> empty; <span class="keywordflow">return</span> empty; }
339 <a name="l00330"></a><a class="code" href="classModule.html#OnChannelSync_28chanrec_20_2Achan_29">00330</a> <a class="code" href="modules_8h.html#string_5Flist">string_list</a>     <a class="code" href="classModule.html#OnChannelSync_28chanrec_20_2Achan_29">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#string_5Flist">string_list</a> empty; <span class="keywordflow">return</span> empty; }
340 <a name="l00331"></a><a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">00331</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">Module::On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;output) { };
341 <a name="l00332"></a><a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00332</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { <span class="keywordflow">return</span> 0; };
342 <a name="l00333"></a><a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00333</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name) { };
343 <a name="l00334"></a><a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00334</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">Module::OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name) { };
344 <a name="l00335"></a><a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">00335</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">Module::OnBackgroundTimer</a>(time_t curtime) { };
345 <a name="l00336"></a><a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">00336</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">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) { };
346 <a name="l00337"></a><a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00337</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnPreCommand_28std_3A_3Astring_20command_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Module::OnPreCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> 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; };
347 <a name="l00338"></a><a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">00338</a> <span class="keywordtype">bool</span>            <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
348 <a name="l00339"></a><a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">00339</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
349 <a name="l00340"></a><a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">00340</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnUserPreKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">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, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { <span class="keywordflow">return</span> 0; };
350 <a name="l00341"></a><a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">00341</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnUserKick_28userrec_20_2Asource_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20reason_29">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, <a class="code" href="namespaceirc.html#string">std::string</a> reason) { };
351 <a name="l00342"></a><a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">00342</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnRawMode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20char_20mode_2C_20std_3A_3Astring_20param_2C_20bool_20adding_2C_20int_20pcnt_29">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, <a class="code" href="namespaceirc.html#string">std::string</a> param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
352 <a name="l00343"></a><a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00343</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">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; };
353 <a name="l00344"></a><a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">00344</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> keygiven) { <span class="keywordflow">return</span> 0; };
354 <a name="l00345"></a><a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00345</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">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; };
355 <a name="l00346"></a><a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00346</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">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; };
356 <a name="l00347"></a><a class="code" href="classModule.html#OnStats_28char_20symbol_29">00347</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnStats_28char_20symbol_29">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
357 <a name="l00348"></a><a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00348</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { <span class="keywordflow">return</span> 0; };
358 <a name="l00349"></a><a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00349</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { <span class="keywordflow">return</span> 0; };
359 <a name="l00350"></a><a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00350</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="namespaceirc.html#string">std::string</a> topic) { <span class="keywordflow">return</span> 0; };
360 <a name="l00351"></a><a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">00351</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
361 <a name="l00352"></a><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">00352</a> <span class="keywordtype">char</span>*           <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
362 <a name="l00353"></a><a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">00353</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">Module::OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input) { <span class="keywordflow">return</span> 0; };
363 <a name="l00354"></a><a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">00354</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
364 <a name="l00355"></a><a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">00355</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
365 <a name="l00356"></a><a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00356</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask) { <span class="keywordflow">return</span> 0; };
366 <a name="l00357"></a><a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00357</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,<a class="code" href="namespaceirc.html#string">std::string</a> banmask) { <span class="keywordflow">return</span> 0; };
367 <a name="l00358"></a><a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">00358</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, <a class="code" href="namespaceirc.html#string">std::string</a> ip, <span class="keywordtype">int</span> localport) { };
368 <a name="l00359"></a><a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">00359</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">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; };
369 <a name="l00360"></a><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">00360</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
370 <a name="l00361"></a><a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">00361</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &amp;readresult) { <span class="keywordflow">return</span> 0; };
371 <a name="l00362"></a>00362 
372 <a name="l00363"></a>00363 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
373 <a name="l00364"></a>00364 <span class="comment">// exports in the core</span>
374 <a name="l00365"></a>00365 <span class="comment">//</span>
375 <a name="l00366"></a>00366 
376 <a name="l00367"></a><a class="code" href="classServer.html#Server_28_29">00367</a> <a class="code" href="classServer.html#Server_28_29">Server::Server</a>()
377 <a name="l00368"></a>00368 {
378 <a name="l00369"></a>00369 }
379 <a name="l00370"></a>00370 
380 <a name="l00371"></a><a class="code" href="classServer.html#_7EServer_28_29">00371</a> <a class="code" href="classServer.html#_7EServer_28_29">Server::~Server</a>()
381 <a name="l00372"></a>00372 {
382 <a name="l00373"></a>00373 }
383 <a name="l00374"></a>00374 
384 <a name="l00375"></a><a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">00375</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">Server::AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock)
385 <a name="l00376"></a>00376 {
386 <a name="l00377"></a>00377         <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
387 <a name="l00378"></a>00378 }
388 <a name="l00379"></a>00379 
389 <a name="l00380"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00380</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server::DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock)
390 <a name="l00381"></a>00381 {
391 <a name="l00382"></a>00382         <span class="keywordflow">for</span> (std::vector&lt;InspSocket*&gt;::iterator a = <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.begin(); a &lt; <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.end(); a++)
392 <a name="l00383"></a>00383         {
393 <a name="l00384"></a>00384                 <span class="keywordflow">if</span> (*a == sock)
394 <a name="l00385"></a>00385                 {
395 <a name="l00386"></a>00386                         <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
396 <a name="l00387"></a>00387                         <span class="keywordflow">return</span>;
397 <a name="l00388"></a>00388                 }
398 <a name="l00389"></a>00389         }
399 <a name="l00390"></a>00390 }
400 <a name="l00391"></a>00391 
401 <a name="l00392"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00392</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">Server::SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s)
402 <a name="l00393"></a>00393 {
403 <a name="l00394"></a>00394         WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
404 <a name="l00395"></a>00395 }
405 <a name="l00396"></a>00396 
406 <a name="l00397"></a><a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00397</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server::MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern)
407 <a name="l00398"></a>00398 {
408 <a name="l00399"></a>00399         <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
409 <a name="l00400"></a>00400         strlcpy(literal,sliteral.c_str(),MAXBUF);
410 <a name="l00401"></a>00401         strlcpy(pattern,spattern.c_str(),MAXBUF);
411 <a name="l00402"></a>00402         <span class="keywordflow">return</span> match(literal,pattern);
412 <a name="l00403"></a>00403 }
413 <a name="l00404"></a>00404 
414 <a name="l00405"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00405</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">Server::SendToModeMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes, <span class="keywordtype">int</span> flags, <a class="code" href="namespaceirc.html#string">std::string</a> text)
415 <a name="l00406"></a>00406 {
416 <a name="l00407"></a>00407         WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
417 <a name="l00408"></a>00408 }
418 <a name="l00409"></a>00409 
419 <a name="l00410"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00410</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> key)
420 <a name="l00411"></a>00411 {
421 <a name="l00412"></a>00412         <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
422 <a name="l00413"></a>00413 }
423 <a name="l00414"></a>00414 
424 <a name="l00415"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00415</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> cname, <a class="code" href="namespaceirc.html#string">std::string</a> reason)
425 <a name="l00416"></a>00416 {
426 <a name="l00417"></a>00417         <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
427 <a name="l00418"></a>00418 }
428 <a name="l00419"></a>00419 
429 <a name="l00420"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00420</a> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
430 <a name="l00421"></a>00421 {
431 <a name="l00422"></a>00422         <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
432 <a name="l00423"></a>00423         userl.clear();
433 <a name="l00424"></a>00424         std::vector&lt;char*&gt; *<a class="code" href="channels_8cpp.html#list_5BMAXBUF_5D">list</a> = chan-&gt;<a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
434 <a name="l00425"></a>00425         <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = list-&gt;begin(); i != list-&gt;end(); i++)
435 <a name="l00426"></a>00426         {
436 <a name="l00427"></a>00427                 <span class="keywordtype">char</span>* o = *i;
437 <a name="l00428"></a>00428                 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
438 <a name="l00429"></a>00429         }
439 <a name="l00430"></a>00430         <span class="keywordflow">return</span> userl;
440 <a name="l00431"></a>00431 }
441 <a name="l00432"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00432</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname)
442 <a name="l00433"></a>00433 {
443 <a name="l00434"></a>00434         force_nickchange(user,nickname.c_str());
444 <a name="l00435"></a>00435 }
445 <a name="l00436"></a>00436 
446 <a name="l00437"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00437</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason)
447 <a name="l00438"></a>00438 {
448 <a name="l00439"></a>00439         kill_link(user,reason.c_str());
449 <a name="l00440"></a>00440 }
450 <a name="l00441"></a>00441 
451 <a name="l00442"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00442</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server::IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server)
452 <a name="l00443"></a>00443 {
453 <a name="l00444"></a>00444         <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(server.c_str());
454 <a name="l00445"></a>00445 }
455 <a name="l00446"></a>00446 
456 <a name="l00447"></a><a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00447</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::CallCommandHandler</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
457 <a name="l00448"></a>00448 {
458 <a name="l00449"></a>00449         call_handler(commandname.c_str(),parameters,pcnt,user);
459 <a name="l00450"></a>00450 }
460 <a name="l00451"></a>00451 
461 <a name="l00452"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00452</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Server::Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s)
462 <a name="l00453"></a>00453 {
463 <a name="l00454"></a>00454         log(level,<span class="stringliteral">"%s"</span>,s.c_str());
464 <a name="l00455"></a>00455 }
465 <a name="l00456"></a>00456 
466 <a name="l00457"></a><a class="code" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">00457</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
467 <a name="l00458"></a>00458 {
468 <a name="l00459"></a>00459         <a class="code" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand</a>(cmd,f,flags,minparams,source);
469 <a name="l00460"></a>00460 }
470 <a name="l00461"></a>00461 
471 <a name="l00462"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00462</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
472 <a name="l00463"></a>00463 {
473 <a name="l00464"></a>00464         <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(parameters,pcnt,user);
474 <a name="l00465"></a>00465 }
475 <a name="l00466"></a>00466 
476 <a name="l00467"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00467</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server::Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s)
477 <a name="l00468"></a>00468 {
478 <a name="l00469"></a>00469         Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
479 <a name="l00470"></a>00470 }
480 <a name="l00471"></a>00471 
481 <a name="l00472"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00472</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s)
482 <a name="l00473"></a>00473 {
483 <a name="l00474"></a>00474         WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
484 <a name="l00475"></a>00475 }
485 <a name="l00476"></a>00476 
486 <a name="l00477"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00477</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> s)
487 <a name="l00478"></a>00478 {
488 <a name="l00479"></a>00479         WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
489 <a name="l00480"></a>00480 }
490 <a name="l00481"></a>00481 
491 <a name="l00482"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00482</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, <a class="code" href="namespaceirc.html#string">std::string</a> s)
492 <a name="l00483"></a>00483 {
493 <a name="l00484"></a>00484         <span class="keywordflow">if</span> (!Source)
494 <a name="l00485"></a>00485         {
495 <a name="l00486"></a>00486                 <span class="comment">// if source is NULL, then the message originates from the local server</span>
496 <a name="l00487"></a>00487                 Write(Dest-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
497 <a name="l00488"></a>00488         }
498 <a name="l00489"></a>00489         <span class="keywordflow">else</span>
499 <a name="l00490"></a>00490         {
500 <a name="l00491"></a>00491                 <span class="comment">// otherwise it comes from the user specified</span>
501 <a name="l00492"></a>00492                 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
502 <a name="l00493"></a>00493         }
503 <a name="l00494"></a>00494 }
504 <a name="l00495"></a>00495 
505 <a name="l00496"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00496</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">Server::SendChannelServerNotice</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> text)
506 <a name="l00497"></a>00497 {
507 <a name="l00498"></a>00498         WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
508 <a name="l00499"></a>00499 }
509 <a name="l00500"></a>00500 
510 <a name="l00501"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00501</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, <a class="code" href="namespaceirc.html#string">std::string</a> s,<span class="keywordtype">bool</span> IncludeSender)
511 <a name="l00502"></a>00502 {
512 <a name="l00503"></a>00503         <span class="keywordflow">if</span> (IncludeSender)
513 <a name="l00504"></a>00504         {
514 <a name="l00505"></a>00505                 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
515 <a name="l00506"></a>00506         }
516 <a name="l00507"></a>00507         <span class="keywordflow">else</span>
517 <a name="l00508"></a>00508         {
518 <a name="l00509"></a>00509                 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
519 <a name="l00510"></a>00510         }
520 <a name="l00511"></a>00511 }
521 <a name="l00512"></a>00512 
522 <a name="l00513"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00513</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
523 <a name="l00514"></a>00514 {
524 <a name="l00515"></a>00515         <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
525 <a name="l00516"></a>00516 }
526 <a name="l00517"></a>00517 
527 <a name="l00518"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00518</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text,<span class="keywordtype">bool</span> IncludeSender)
528 <a name="l00519"></a>00519 {
529 <a name="l00520"></a>00520         <span class="keywordflow">if</span> (IncludeSender)
530 <a name="l00521"></a>00521         {
531 <a name="l00522"></a>00522                 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
532 <a name="l00523"></a>00523         }
533 <a name="l00524"></a>00524         <span class="keywordflow">else</span>
534 <a name="l00525"></a>00525         {
535 <a name="l00526"></a>00526                 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
536 <a name="l00527"></a>00527         }
537 <a name="l00528"></a>00528 }
538 <a name="l00529"></a>00529 
539 <a name="l00530"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00530</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text)
540 <a name="l00531"></a>00531 {
541 <a name="l00532"></a>00532         WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
542 <a name="l00533"></a>00533 }
543 <a name="l00534"></a>00534 
544 <a name="l00535"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00535</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host)
545 <a name="l00536"></a>00536 {
546 <a name="l00537"></a>00537         <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
547 <a name="l00538"></a>00538 }
548 <a name="l00539"></a>00539 
549 <a name="l00540"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00540</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos)
550 <a name="l00541"></a>00541 {
551 <a name="l00542"></a>00542         <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
552 <a name="l00543"></a>00543 }
553 <a name="l00544"></a>00544 
554 <a name="l00545"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00545</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server::IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick)
555 <a name="l00546"></a>00546 {
556 <a name="l00547"></a>00547         <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
557 <a name="l00548"></a>00548 }
558 <a name="l00549"></a>00549 
559 <a name="l00550"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00550</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">Server::FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick)
560 <a name="l00551"></a>00551 {
561 <a name="l00552"></a>00552         <span class="keywordflow">return</span> Find(nick);
562 <a name="l00553"></a>00553 }
563 <a name="l00554"></a>00554 
564 <a name="l00555"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00555</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
565 <a name="l00556"></a>00556 {
566 <a name="l00557"></a>00557         <span class="keywordflow">return</span> (socket &lt; 65536 ? fd_ref_table[socket] : NULL);
567 <a name="l00558"></a>00558 }
568 <a name="l00559"></a>00559 
569 <a name="l00560"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00560</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">Server::FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel)
570 <a name="l00561"></a>00561 {
571 <a name="l00562"></a>00562         <span class="keywordflow">return</span> FindChan(channel.c_str());
572 <a name="l00563"></a>00563 }
573 <a name="l00564"></a>00564 
574 <a name="l00565"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00565</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
575 <a name="l00566"></a>00566 {
576 <a name="l00567"></a>00567         <span class="keywordflow">return</span> <a class="code" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
577 <a name="l00568"></a>00568 }
578 <a name="l00569"></a>00569 
579 <a name="l00570"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00570</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
580 <a name="l00571"></a>00571 {
581 <a name="l00572"></a>00572         <span class="keywordflow">return</span> <a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(User,Chan);
582 <a name="l00573"></a>00573 }
583 <a name="l00574"></a>00574 
584 <a name="l00575"></a><a class="code" href="classServer.html#GetServerName_28_29">00575</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">Server::GetServerName</a>()
585 <a name="l00576"></a>00576 {
586 <a name="l00577"></a>00577         <span class="keywordflow">return</span> getservername();
587 <a name="l00578"></a>00578 }
588 <a name="l00579"></a>00579 
589 <a name="l00580"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00580</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">Server::GetNetworkName</a>()
590 <a name="l00581"></a>00581 {
591 <a name="l00582"></a>00582         <span class="keywordflow">return</span> getnetworkname();
592 <a name="l00583"></a>00583 }
593 <a name="l00584"></a>00584 
594 <a name="l00585"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00585</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">Server::GetServerDescription</a>()
595 <a name="l00586"></a>00586 {
596 <a name="l00587"></a>00587         <span class="keywordflow">return</span> getserverdesc();
597 <a name="l00588"></a>00588 }
598 <a name="l00589"></a>00589 
599 <a name="l00590"></a><a class="code" href="classServer.html#GetAdmin_28_29">00590</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>()
600 <a name="l00591"></a>00591 {
601 <a name="l00592"></a>00592         <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
602 <a name="l00593"></a>00593 }
603 <a name="l00594"></a>00594 
604 <a name="l00595"></a>00595 
605 <a name="l00596"></a>00596 
606 <a name="l00597"></a><a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">00597</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off)
607 <a name="l00598"></a>00598 {
608 <a name="l00599"></a>00599         <span class="keywordflow">if</span> (((modechar &gt;= <span class="charliteral">'A'</span>) &amp;&amp; (modechar &lt;= <span class="charliteral">'Z'</span>)) || ((modechar &gt;= <span class="charliteral">'a'</span>) &amp;&amp; (modechar &lt;= <span class="charliteral">'z'</span>)))
609 <a name="l00600"></a>00600         {
610 <a name="l00601"></a>00601                 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
611 <a name="l00602"></a>00602                 {
612 <a name="l00603"></a>00603                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
613 <a name="l00604"></a>00604                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
614 <a name="l00605"></a>00605                 }
615 <a name="l00606"></a>00606                 <span class="keywordflow">if</span> (((params_when_on&gt;0) || (params_when_off&gt;0)) &amp;&amp; (type == <a class="code" href="modules_8h.html#MT_5FCLIENT">MT_CLIENT</a>))
616 <a name="l00607"></a>00607                 {
617 <a name="l00608"></a>00608                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
618 <a name="l00609"></a>00609                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
619 <a name="l00610"></a>00610                 }
620 <a name="l00611"></a>00611                 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
621 <a name="l00612"></a>00612                 {
622 <a name="l00613"></a>00613                         log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
623 <a name="l00614"></a>00614                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
624 <a name="l00615"></a>00615                 }
625 <a name="l00616"></a>00616                 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
626 <a name="l00617"></a>00617         }
627 <a name="l00618"></a>00618         <span class="keywordflow">else</span>
628 <a name="l00619"></a>00619         {
629 <a name="l00620"></a>00620                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
630 <a name="l00621"></a>00621         }
631 <a name="l00622"></a>00622         <span class="keywordflow">return</span> <span class="keyword">false</span>;
632 <a name="l00623"></a>00623 }
633 <a name="l00624"></a>00624 
634 <a name="l00625"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00625</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
635 <a name="l00626"></a>00626 {
636 <a name="l00627"></a>00627         <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#MT_5FCHANNEL">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
637 <a name="l00628"></a>00628         <span class="keywordflow">if</span> (res)
638 <a name="l00629"></a>00629                 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
639 <a name="l00630"></a>00630         <span class="keywordflow">return</span> res;
640 <a name="l00631"></a>00631 }
641 <a name="l00632"></a>00632 
642 <a name="l00633"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00633</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
643 <a name="l00634"></a>00634 {
644 <a name="l00635"></a>00635         <span class="keywordflow">return</span> usercount(c);
645 <a name="l00636"></a>00636 }
646 <a name="l00637"></a>00637 
647 <a name="l00638"></a>00638 
648 <a name="l00639"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00639</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message)
649 <a name="l00640"></a>00640 {
650 <a name="l00641"></a>00641         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
651 <a name="l00642"></a>00642         user-&gt;<a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
652 <a name="l00643"></a>00643         user-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
653 <a name="l00644"></a>00644         Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,user-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,message.c_str());
654 <a name="l00645"></a>00645 <span class="preprocessor">#ifdef USE_KQUEUE</span>
655 <a name="l00646"></a>00646 <span class="preprocessor"></span>        <span class="keyword">struct </span>kevent ke;
656 <a name="l00647"></a>00647         EV_SET(&amp;ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
657 <a name="l00648"></a>00648         <span class="keywordtype">int</span> i = kevent(kq, &amp;ke, 1, 0, 0, NULL);
658 <a name="l00649"></a>00649         <span class="keywordflow">if</span> (i == -1)
659 <a name="l00650"></a>00650         {
660 <a name="l00651"></a>00651                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>);
661 <a name="l00652"></a>00652         }
662 <a name="l00653"></a>00653 <span class="preprocessor">#endif</span>
663 <a name="l00654"></a>00654 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_EPOLL</span>
664 <a name="l00655"></a>00655 <span class="preprocessor"></span>        <span class="keyword">struct </span>epoll_event ev;
665 <a name="l00656"></a>00656         ev.events = EPOLLIN | EPOLLET;
666 <a name="l00657"></a>00657         ev.data.fd = old_fd;
667 <a name="l00658"></a>00658         <span class="keywordtype">int</span> i = epoll_ctl(ep, EPOLL_CTL_DEL, old_fd, &amp;ev);
668 <a name="l00659"></a>00659         <span class="keywordflow">if</span> (i &lt; 0)
669 <a name="l00660"></a>00660         {
670 <a name="l00661"></a>00661                 log(<a class="code" href="modules_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"epoll: List deletion failure!"</span>);
671 <a name="l00662"></a>00662         }
672 <a name="l00663"></a>00663 <span class="preprocessor">#endif</span>
673 <a name="l00664"></a>00664 <span class="preprocessor"></span>
674 <a name="l00665"></a>00665         shutdown(old_fd,2);
675 <a name="l00666"></a>00666         close(old_fd);
676 <a name="l00667"></a>00667         <span class="keywordflow">return</span> <span class="keyword">true</span>;
677 <a name="l00668"></a>00668 }
678 <a name="l00669"></a>00669 
679 <a name="l00670"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00670</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,<a class="code" href="namespaceirc.html#string">std::string</a> message)
680 <a name="l00671"></a>00671 {
681 <a name="l00672"></a>00672         zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a> = alive-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
682 <a name="l00673"></a>00673         alive-&gt;<a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>;
683 <a name="l00674"></a>00674         alive-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
684 <a name="l00675"></a>00675         Write(zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,alive-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
685 <a name="l00676"></a>00676         kill_link(alive,message.c_str());
686 <a name="l00677"></a>00677         fd_ref_table[zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = zombie;
687 <a name="l00678"></a>00678         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
688 <a name="l00679"></a>00679         {
689 <a name="l00680"></a>00680                 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#channel">channel</a> != NULL)
690 <a name="l00681"></a>00681                 {
691 <a name="l00682"></a>00682                         <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#channel">channel</a>-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>)
692 <a name="l00683"></a>00683                         {
693 <a name="l00684"></a>00684                                 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#chans_5BMAXCHANS_5D">chans</a>[i].<a class="code" href="classucrec.html#channel">channel</a>;
694 <a name="l00685"></a>00685                                 WriteFrom(zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
695 <a name="l00686"></a>00686                                 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#topicset">topicset</a>)
696 <a name="l00687"></a>00687                                 {
697 <a name="l00688"></a>00688                                         WriteServ(zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>);
698 <a name="l00689"></a>00689                                         WriteServ(zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#topicset">topicset</a>);
699 <a name="l00690"></a>00690                                 }
700 <a name="l00691"></a>00691                                 userlist(zombie,Ptr);
701 <a name="l00692"></a>00692                                 WriteServ(zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>, Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
702 <a name="l00693"></a>00693 
703 <a name="l00694"></a>00694                         }
704 <a name="l00695"></a>00695                 }
705 <a name="l00696"></a>00696         }
706 <a name="l00697"></a>00697         <span class="keywordflow">return</span> <span class="keyword">true</span>;
707 <a name="l00698"></a>00698 }
708 <a name="l00699"></a>00699 
709 <a name="l00700"></a><a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00700</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
710 <a name="l00701"></a>00701 {
711 <a name="l00702"></a>00702         <a class="code" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_gline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
712 <a name="l00703"></a>00703 }
713 <a name="l00704"></a>00704 
714 <a name="l00705"></a><a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">00705</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server::AddQLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickname)
715 <a name="l00706"></a>00706 {
716 <a name="l00707"></a>00707         <a class="code" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">add_qline</a>(duration, source.c_str(), reason.c_str(), nickname.c_str());
717 <a name="l00708"></a>00708 }
718 <a name="l00709"></a>00709 
719 <a name="l00710"></a><a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">00710</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">Server::AddZLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipaddr)
720 <a name="l00711"></a>00711 {
721 <a name="l00712"></a>00712         <a class="code" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">add_zline</a>(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
722 <a name="l00713"></a>00713 }
723 <a name="l00714"></a>00714 
724 <a name="l00715"></a><a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00715</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddKLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
725 <a name="l00716"></a>00716 {
726 <a name="l00717"></a>00717         <a class="code" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_kline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
727 <a name="l00718"></a>00718 }
728 <a name="l00719"></a>00719 
729 <a name="l00720"></a><a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00720</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server::AddELine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, <a class="code" href="namespaceirc.html#string">std::string</a> source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
730 <a name="l00721"></a>00721 {
731 <a name="l00722"></a>00722         <a class="code" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">add_eline</a>(duration, source.c_str(), reason.c_str(), hostmask.c_str());
732 <a name="l00723"></a>00723 }
733 <a name="l00724"></a>00724 
734 <a name="l00725"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00725</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server::DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
735 <a name="l00726"></a>00726 {
736 <a name="l00727"></a>00727         <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline</a>(hostmask.c_str());
737 <a name="l00728"></a>00728 }
738 <a name="l00729"></a>00729 
739 <a name="l00730"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00730</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server::DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname)
740 <a name="l00731"></a>00731 {
741 <a name="l00732"></a>00732         <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline</a>(nickname.c_str());
742 <a name="l00733"></a>00733 }
743 <a name="l00734"></a>00734 
744 <a name="l00735"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00735</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">Server::DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr)
745 <a name="l00736"></a>00736 {
746 <a name="l00737"></a>00737         <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline</a>(ipaddr.c_str());
747 <a name="l00738"></a>00738 }
748 <a name="l00739"></a>00739 
749 <a name="l00740"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00740</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server::DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
750 <a name="l00741"></a>00741 {
751 <a name="l00742"></a>00742         <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline</a>(hostmask.c_str());
752 <a name="l00743"></a>00743 }
753 <a name="l00744"></a>00744 
754 <a name="l00745"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00745</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server::DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask)
755 <a name="l00746"></a>00746 {
756 <a name="l00747"></a>00747         <span class="keywordflow">return</span> <a class="code" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline</a>(hostmask.c_str());
757 <a name="l00748"></a>00748 }
758 <a name="l00749"></a>00749 
759 <a name="l00750"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00750</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> delta)
760 <a name="l00751"></a>00751 {
761 <a name="l00752"></a>00752         <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
762 <a name="l00753"></a>00753 }
763 <a name="l00754"></a>00754 
764 <a name="l00755"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00755</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server::IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask)
765 <a name="l00756"></a>00756 {
766 <a name="l00757"></a>00757         <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
767 <a name="l00758"></a>00758         <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
768 <a name="l00759"></a>00759                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
769 <a name="l00760"></a>00760         <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
770 <a name="l00761"></a>00761                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
771 <a name="l00762"></a>00762         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
772 <a name="l00763"></a>00763                 <span class="keywordflow">if</span> (dest[i] &lt; 32)
773 <a name="l00764"></a>00764                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
774 <a name="l00765"></a>00765         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
775 <a name="l00766"></a>00766                 <span class="keywordflow">if</span> (dest[i] &gt; 126)
776 <a name="l00767"></a>00767                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
777 <a name="l00768"></a>00768         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
778 <a name="l00769"></a>00769         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
779 <a name="l00770"></a>00770                 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
780 <a name="l00771"></a>00771                         c++;
781 <a name="l00772"></a>00772         <span class="keywordflow">if</span> (c&gt;1)
782 <a name="l00773"></a>00773                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
783 <a name="l00774"></a>00774         c = 0;
784 <a name="l00775"></a>00775         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
785 <a name="l00776"></a>00776                 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
786 <a name="l00777"></a>00777                         c++;
787 <a name="l00778"></a>00778         <span class="keywordflow">if</span> (c&gt;1)
788 <a name="l00779"></a>00779                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
789 <a name="l00780"></a>00780 
790 <a name="l00781"></a>00781         <span class="keywordflow">return</span> <span class="keyword">true</span>;
791 <a name="l00782"></a>00782 }
792 <a name="l00783"></a>00783 
793 <a name="l00784"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00784</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">Server::FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name)
794 <a name="l00785"></a>00785 {
795 <a name="l00786"></a>00786         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt;= <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>; i++)
796 <a name="l00787"></a>00787         {
797 <a name="l00788"></a>00788                 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#module_5Fnames">module_names</a>[i] == name)
798 <a name="l00789"></a>00789                 {
799 <a name="l00790"></a>00790                         <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
800 <a name="l00791"></a>00791                 }
801 <a name="l00792"></a>00792         }
802 <a name="l00793"></a>00793         <span class="keywordflow">return</span> NULL;
803 <a name="l00794"></a>00794 }
804 <a name="l00795"></a>00795 
805 <a name="l00796"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00796</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>()
806 <a name="l00797"></a>00797 {
807 <a name="l00798"></a>00798         <a class="code" href="modules_8cpp.html#include_5Fstack">include_stack</a>.clear();
808 <a name="l00799"></a>00799         this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
809 <a name="l00800"></a>00800         this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
810 <a name="l00801"></a>00801         this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
811 <a name="l00802"></a>00802         <span class="keywordflow">if</span> (!this-&gt;readerror)
812 <a name="l00803"></a>00803                 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
813 <a name="l00804"></a>00804 }
814 <a name="l00805"></a>00805 
815 <a name="l00806"></a>00806 
816 <a name="l00807"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00807</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>()
817 <a name="l00808"></a>00808 {
818 <a name="l00809"></a>00809         <span class="keywordflow">if</span> (this-&gt;cache)
819 <a name="l00810"></a>00810                 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a>;
820 <a name="l00811"></a>00811         <span class="keywordflow">if</span> (this-&gt;errorlog)
821 <a name="l00812"></a>00812                 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
822 <a name="l00813"></a>00813 }
823 <a name="l00814"></a>00814 
824 <a name="l00815"></a>00815 
825 <a name="l00816"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00816</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
826 <a name="l00817"></a>00817 {
827 <a name="l00818"></a>00818         this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
828 <a name="l00819"></a>00819         this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
829 <a name="l00820"></a>00820         this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a>);
830 <a name="l00821"></a>00821         <span class="keywordflow">if</span> (!this-&gt;readerror)
831 <a name="l00822"></a>00822                 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">CONF_FILE_NOT_FOUND</a>;
832 <a name="l00823"></a>00823 };
833 <a name="l00824"></a>00824 
834 <a name="l00825"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00825</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadValue</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index)
835 <a name="l00826"></a>00826 {
836 <a name="l00827"></a>00827         <span class="keywordtype">char</span> val[MAXBUF];
837 <a name="l00828"></a>00828         <span class="keywordtype">char</span> t[MAXBUF];
838 <a name="l00829"></a>00829         <span class="keywordtype">char</span> n[MAXBUF];
839 <a name="l00830"></a>00830         strlcpy(t,tag.c_str(),MAXBUF);
840 <a name="l00831"></a>00831         strlcpy(n,name.c_str(),MAXBUF);
841 <a name="l00832"></a>00832         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
842 <a name="l00833"></a>00833         <span class="keywordflow">if</span> (!res)
843 <a name="l00834"></a>00834         {
844 <a name="l00835"></a>00835                 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
845 <a name="l00836"></a>00836                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
846 <a name="l00837"></a>00837         }
847 <a name="l00838"></a>00838         <span class="keywordflow">return</span> val;
848 <a name="l00839"></a>00839 }
849 <a name="l00840"></a>00840 
850 <a name="l00841"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00841</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadFlag</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index)
851 <a name="l00842"></a>00842 {
852 <a name="l00843"></a>00843         <span class="keywordtype">char</span> val[MAXBUF];
853 <a name="l00844"></a>00844         <span class="keywordtype">char</span> t[MAXBUF];
854 <a name="l00845"></a>00845         <span class="keywordtype">char</span> n[MAXBUF];
855 <a name="l00846"></a>00846         strlcpy(t,tag.c_str(),MAXBUF);
856 <a name="l00847"></a>00847         strlcpy(n,name.c_str(),MAXBUF);
857 <a name="l00848"></a>00848         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
858 <a name="l00849"></a>00849         <span class="keywordflow">if</span> (!res)
859 <a name="l00850"></a>00850         {
860 <a name="l00851"></a>00851                 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
861 <a name="l00852"></a>00852                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
862 <a name="l00853"></a>00853         }
863 <a name="l00854"></a>00854         <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
864 <a name="l00855"></a>00855         <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>));
865 <a name="l00856"></a>00856 }
866 <a name="l00857"></a>00857 
867 <a name="l00858"></a><a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">00858</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ConfigReader::ReadInteger</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <a class="code" href="namespaceirc.html#string">std::string</a> name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
868 <a name="l00859"></a>00859 {
869 <a name="l00860"></a>00860         <span class="keywordtype">char</span> val[MAXBUF];
870 <a name="l00861"></a>00861         <span class="keywordtype">char</span> t[MAXBUF];
871 <a name="l00862"></a>00862         <span class="keywordtype">char</span> n[MAXBUF];
872 <a name="l00863"></a>00863         strlcpy(t,tag.c_str(),MAXBUF);
873 <a name="l00864"></a>00864         strlcpy(n,name.c_str(),MAXBUF);
874 <a name="l00865"></a>00865         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
875 <a name="l00866"></a>00866         <span class="keywordflow">if</span> (!res)
876 <a name="l00867"></a>00867         {
877 <a name="l00868"></a>00868                 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">CONF_VALUE_NOT_FOUND</a>;
878 <a name="l00869"></a>00869                 <span class="keywordflow">return</span> 0;
879 <a name="l00870"></a>00870         }
880 <a name="l00871"></a>00871         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
881 <a name="l00872"></a>00872         {
882 <a name="l00873"></a>00873                 <span class="keywordflow">if</span> (!isdigit(val[i]))
883 <a name="l00874"></a>00874                 {
884 <a name="l00875"></a>00875                         this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a>;
885 <a name="l00876"></a>00876                         <span class="keywordflow">return</span> 0;
886 <a name="l00877"></a>00877                 }
887 <a name="l00878"></a>00878         }
888 <a name="l00879"></a>00879         <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
889 <a name="l00880"></a>00880         {
890 <a name="l00881"></a>00881                 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = <a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a>;
891 <a name="l00882"></a>00882                 <span class="keywordflow">return</span> 0;
892 <a name="l00883"></a>00883         }
893 <a name="l00884"></a>00884         <span class="keywordflow">return</span> atoi(val);
894 <a name="l00885"></a>00885 }
895 <a name="l00886"></a>00886 
896 <a name="l00887"></a><a class="code" href="classConfigReader.html#GetError_28_29">00887</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>()
897 <a name="l00888"></a>00888 {
898 <a name="l00889"></a>00889         <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#error">error</a>;
899 <a name="l00890"></a>00890         this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = 0;
900 <a name="l00891"></a>00891         <span class="keywordflow">return</span> olderr;
901 <a name="l00892"></a>00892 }
902 <a name="l00893"></a>00893 
903 <a name="l00894"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00894</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
904 <a name="l00895"></a>00895 {
905 <a name="l00896"></a>00896         <span class="keywordflow">if</span> (bail)
906 <a name="l00897"></a>00897         {
907 <a name="l00898"></a>00898                 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;str().c_str());
908 <a name="l00899"></a>00899                 exit(0);
909 <a name="l00900"></a>00900         }
910 <a name="l00901"></a>00901         <span class="keywordflow">else</span>
911 <a name="l00902"></a>00902         {
912 <a name="l00903"></a>00903                 <span class="keywordtype">char</span> dataline[1024];
913 <a name="l00904"></a>00904                 <span class="keywordflow">if</span> (user)
914 <a name="l00905"></a>00905                 {
915 <a name="l00906"></a>00906                         WriteServ(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
916 <a name="l00907"></a>00907                         <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
917 <a name="l00908"></a>00908                         {
918 <a name="l00909"></a>00909                                 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
919 <a name="l00910"></a>00910                                 WriteServ(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,dataline);
920 <a name="l00911"></a>00911                         }
921 <a name="l00912"></a>00912                 }
922 <a name="l00913"></a>00913                 <span class="keywordflow">else</span>
923 <a name="l00914"></a>00914                 {
924 <a name="l00915"></a>00915                         WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
925 <a name="l00916"></a>00916                         <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
926 <a name="l00917"></a>00917                         {
927 <a name="l00918"></a>00918                                 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
928 <a name="l00919"></a>00919                                 WriteOpers(dataline);
929 <a name="l00920"></a>00920                         }
930 <a name="l00921"></a>00921                 }
931 <a name="l00922"></a>00922                 <span class="keywordflow">return</span>;
932 <a name="l00923"></a>00923         }
933 <a name="l00924"></a>00924 }
934 <a name="l00925"></a>00925 
935 <a name="l00926"></a>00926 
936 <a name="l00927"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00927</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader::Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag)
937 <a name="l00928"></a>00928 {
938 <a name="l00929"></a>00929         <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
939 <a name="l00930"></a>00930 }
940 <a name="l00931"></a>00931 
941 <a name="l00932"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00932</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">ConfigReader::EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index)
942 <a name="l00933"></a>00933 {
943 <a name="l00934"></a>00934         <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
944 <a name="l00935"></a>00935 }
945 <a name="l00936"></a>00936 
946 <a name="l00937"></a><a class="code" href="classConfigReader.html#Verify_28_29">00937</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>()
947 <a name="l00938"></a>00938 {
948 <a name="l00939"></a>00939         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a>;
949 <a name="l00940"></a>00940 }
950 <a name="l00941"></a>00941 
951 <a name="l00942"></a>00942 
952 <a name="l00943"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00943</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
953 <a name="l00944"></a>00944 {
954 <a name="l00945"></a>00945         <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> c;
955 <a name="l00946"></a>00946         readfile(c,filename.c_str());
956 <a name="l00947"></a>00947         this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
957 <a name="l00948"></a>00948 }
958 <a name="l00949"></a>00949 
959 <a name="l00950"></a><a class="code" href="classFileReader.html#FileReader_28_29">00950</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>()
960 <a name="l00951"></a>00951 {
961 <a name="l00952"></a>00952 }
962 <a name="l00953"></a>00953 
963 <a name="l00954"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00954</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">FileReader::LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
964 <a name="l00955"></a>00955 {
965 <a name="l00956"></a>00956         <a class="code" href="modules_8h.html#file_5Fcache">file_cache</a> c;
966 <a name="l00957"></a>00957         readfile(c,filename.c_str());
967 <a name="l00958"></a>00958         this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
968 <a name="l00959"></a>00959 }
969 <a name="l00960"></a>00960 
970 <a name="l00961"></a>00961 
971 <a name="l00962"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00962</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>()
972 <a name="l00963"></a>00963 {
973 <a name="l00964"></a>00964 }
974 <a name="l00965"></a>00965 
975 <a name="l00966"></a><a class="code" href="classFileReader.html#Exists_28_29">00966</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>()
976 <a name="l00967"></a>00967 {
977 <a name="l00968"></a>00968         <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
978 <a name="l00969"></a>00969         {
979 <a name="l00970"></a>00970                 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
980 <a name="l00971"></a>00971         }
981 <a name="l00972"></a>00972         <span class="keywordflow">else</span>
982 <a name="l00973"></a>00973         {
983 <a name="l00974"></a>00974                 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
984 <a name="l00975"></a>00975         }
985 <a name="l00976"></a>00976 }
986 <a name="l00977"></a>00977 
987 <a name="l00978"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00978</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
988 <a name="l00979"></a>00979 {
989 <a name="l00980"></a>00980         <span class="keywordflow">if</span> ((x&lt;0) || ((<span class="keywordtype">unsigned</span>)x&gt;<a class="code" href="classFileReader.html#fc">fc</a>.size()))
990 <a name="l00981"></a>00981                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
991 <a name="l00982"></a>00982         <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
992 <a name="l00983"></a>00983 }
993 <a name="l00984"></a>00984 
994 <a name="l00985"></a><a class="code" href="classFileReader.html#FileSize_28_29">00985</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>()
995 <a name="l00986"></a>00986 {
996 <a name="l00987"></a>00987         <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
997 <a name="l00988"></a>00988 }
998 <a name="l00989"></a>00989 
999 <a name="l00990"></a>00990 
1000 <a name="l00991"></a>00991 std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>(255);
1001 <a name="l00992"></a>00992 std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>(255);
1002 <a name="l00993"></a>00993 
1003 <a name="l00994"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00994</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>  = -1;
1004 <a name="l00995"></a>00995 
1005 <a name="l00996"></a>00996 
1006 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Nov 27 01:43:24 2005 for InspIRCd by&nbsp;
1007 <a href="http://www.doxygen.org/index.html">
1008 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
1009 </body>
1010 </html>