]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/module-doc/classuserrec.html
Re-added the dot graphs again
[user/henk/code/inspircd.git] / docs / module-doc / classuserrec.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>InspIRCd: userrec class Reference</title>
4 <link href="inspircd.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.3.3 -->
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">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8 <h1>userrec Class Reference</h1>Holds all information about a user This class stores all information about a user connected to the irc server.  
9 <a href="#_details">More...</a>
10 <p>
11 <code>#include &lt;<a class="el" href="users_8h-source.html">users.h</a>&gt;</code>
12 <p>
13 Inheritance diagram for userrec:<p><center><img src="classuserrec__inherit__graph.gif" border="0" usemap="#userrec__inherit__map" alt="Inheritance graph"></center>
14 <map name="userrec__inherit__map">
15 <area href="classconnection.html" shape="rect" coords="7,157,93,184" alt="">
16 <area href="classExtensible.html" shape="rect" coords="9,82,91,109" alt="">
17 <area href="classclassbase.html" shape="rect" coords="10,8,90,34" alt="">
18 </map>
19 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for userrec:<p><center><img src="classuserrec__coll__graph.gif" border="0" usemap="#userrec__coll__map" alt="Collaboration graph"></center>
20 <map name="userrec__coll__map">
21 <area href="classconnection.html" shape="rect" coords="199,469,285,496" alt="">
22 <area href="classucrec.html" shape="rect" coords="215,237,269,264" alt="">
23 </map>
24 <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classuserrec-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
25 <tr><td></td></tr>
26 <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
27 <tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a0">userrec</a> ()</td></tr>
28
29 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a1">~userrec</a> ()</td></tr>
30
31 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a2">GetFullHost</a> ()</td></tr>
32
33 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. </em> <a href="#a2"></a><em><br><br></td></tr>
34 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a3">GetFullRealHost</a> ()</td></tr>
35
36 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. </em> <a href="#a3"></a><em><br><br></td></tr>
37 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a4">IsInvited</a> (char *channel)</td></tr>
38
39 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if a user is invited to a channel. </em> <a href="#a4"></a><em><br><br></td></tr>
40 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a5">InviteTo</a> (char *channel)</td></tr>
41
42 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). </em> <a href="#a5"></a><em><br><br></td></tr>
43 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a6">RemoveInvite</a> (char *channel)</td></tr>
44
45 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a channel from a users invite list. </em> <a href="#a6"></a><em><br><br></td></tr>
46 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a7">HasPermission</a> (char *command)</td></tr>
47
48 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. </em> <a href="#a7"></a><em><br><br></td></tr>
49 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a8">AddBuffer</a> (std::string a)</td></tr>
50
51 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method adds data to the buffer of the user. </em> <a href="#a8"></a><em><br><br></td></tr>
52 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a9">BufferIsReady</a> ()</td></tr>
53
54 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method returns true if the buffer contains at least one carriage return character (e.g. </em> <a href="#a9"></a><em><br><br></td></tr>
55 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a10">ClearBuffer</a> ()</td></tr>
56
57 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function clears the entire buffer by setting it to an empty string. </em> <a href="#a10"></a><em><br><br></td></tr>
58 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a11">GetBuffer</a> ()</td></tr>
59
60 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string. </em> <a href="#a11"></a><em><br><br></td></tr>
61 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a12">SetWriteError</a> (std::string error)</td></tr>
62
63 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the write error for a connection. </em> <a href="#a12"></a><em><br><br></td></tr>
64 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a13">GetWriteError</a> ()</td></tr>
65
66 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the write error which last occured on this connection or an empty string if none occured. </em> <a href="#a13"></a><em><br><br></td></tr>
67 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a14">AddWriteBuf</a> (std::string data)</td></tr>
68
69 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds to the user's write buffer. </em> <a href="#a14"></a><em><br><br></td></tr>
70 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#a15">FlushWriteBuf</a> ()</td></tr>
71
72 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flushes as much of the user's buffer to the file descriptor as possible. </em> <a href="#a15"></a><em><br><br></td></tr>
73 <tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
74 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o0">nick</a> [NICKMAX]</td></tr>
75
76 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The users nickname. </em> <a href="#o0"></a><em><br><br></td></tr>
77 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o1">ident</a> [16]</td></tr>
78
79 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The users ident reply. </em> <a href="#o1"></a><em><br><br></td></tr>
80 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o2">dhost</a> [160]</td></tr>
81
82 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The host displayed to non-opers (used for cloaking etc). </em> <a href="#o2"></a><em><br><br></td></tr>
83 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o3">fullname</a> [128]</td></tr>
84
85 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The users full name. </em> <a href="#o3"></a><em><br><br></td></tr>
86 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o4">modes</a> [MAXBUF]</td></tr>
87
88 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The user's mode string. </em> <a href="#o4"></a><em><br><br></td></tr>
89 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classucrec.html">ucrec</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o5">chans</a> [MAXCHANS]</td></tr>
90
91 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o6">server</a> [256]</td></tr>
92
93 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The server the user is connected to. </em> <a href="#o6"></a><em><br><br></td></tr>
94 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o7">awaymsg</a> [512]</td></tr>
95
96 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The user's away message. </em> <a href="#o7"></a><em><br><br></td></tr>
97 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o8">result</a> [256]</td></tr>
98
99 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stores the result of the last GetFullHost or GetRealHost call. </em> <a href="#o8"></a><em><br><br></td></tr>
100 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o9">flood</a></td></tr>
101
102 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. </em> <a href="#o9"></a><em><br><br></td></tr>
103 <tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o10">timeout</a></td></tr>
104
105 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected. </em> <a href="#o10"></a><em><br><br></td></tr>
106 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o11">oper</a> [NICKMAX]</td></tr>
107
108 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The oper type they logged in as, if they are an oper. </em> <a href="#o11"></a><em><br><br></td></tr>
109 <tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o12">dns_done</a></td></tr>
110
111 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. </em> <a href="#o12"></a><em><br><br></td></tr>
112 <tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o13">pingmax</a></td></tr>
113
114 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag. </em> <a href="#o13"></a><em><br><br></td></tr>
115 <tr><td class="memItemLeft" nowrap align=right valign=top>char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o14">password</a> [MAXBUF]</td></tr>
116
117 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Password specified by the user when they registered. </em> <a href="#o14"></a><em><br><br></td></tr>
118 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o15">recvq</a></td></tr>
119
120 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User's receive queue. </em> <a href="#o15"></a><em><br><br></td></tr>
121 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o16">sendq</a></td></tr>
122
123 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User's send queue. </em> <a href="#o16"></a><em><br><br></td></tr>
124 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o17">lines_in</a></td></tr>
125
126 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flood counters. </em> <a href="#o17"></a><em><br><br></td></tr>
127 <tr><td class="memItemLeft" nowrap align=right valign=top>time_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o18">reset_due</a></td></tr>
128
129 <tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o19">threshold</a></td></tr>
130
131 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o20">WriteError</a></td></tr>
132
133 <tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o21">sendqmax</a></td></tr>
134
135 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum size this user's sendq can become. </em> <a href="#o21"></a><em><br><br></td></tr>
136 <tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#o22">recvqmax</a></td></tr>
137
138 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum size this user's recvq can become. </em> <a href="#o22"></a><em><br><br></td></tr>
139 <tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
140 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="users_8h.html#a6">InvitedList</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classuserrec.html#r0">invites</a></td></tr>
141
142 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A list of channels the user has a pending invite to. </em> <a href="#r0"></a><em><br><br></td></tr>
143 </table>
144 <hr><a name="_details"></a><h2>Detailed Description</h2>
145 Holds all information about a user This class stores all information about a user connected to the irc server. 
146 <p>
147 Everything about a connection is stored here primarily, from the user's socket ID (file descriptor) through to the user's nickname and hostname. Use the Find method of the server class to locate a specific user by nickname. 
148 <p>
149
150 <p>
151 Definition at line <a class="el" href="users_8h-source.html#l00108">108</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
152 <a name="a0" doxytag="userrec::userrec"></a><p>
153 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
154   <tr>
155     <td class="mdRow">
156       <table cellpadding="0" cellspacing="0" border="0">
157         <tr>
158           <td class="md" nowrap valign="top"> userrec::userrec </td>
159           <td class="md" valign="top">(&nbsp;</td>
160           <td class="mdname1" valign="top" nowrap>          </td>
161           <td class="md" valign="top">&nbsp;)&nbsp;</td>
162           <td class="md" nowrap></td>
163         </tr>
164
165       </table>
166     </td>
167   </tr>
168 </table>
169 <table cellspacing=5 cellpadding=0 border=0>
170   <tr>
171     <td>
172       &nbsp;
173     </td>
174     <td>
175
176 <p>
177
178 <p>
179 Definition at line <a class="el" href="users_8cpp-source.html#l00028">28</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
180 <p>
181 References <a class="el" href="users_8h-source.html#l00151">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00227">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00231">connection::bytes_out</a>, <a class="el" href="channels_8h-source.html#l00233">ucrec::channel</a>, <a class="el" href="users_8h-source.html#l00142">chans</a>, <a class="el" href="connection_8h-source.html#l00235">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00239">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00130">dhost</a>, <a class="el" href="users_8h-source.html#l00179">dns_done</a>, <a class="el" href="connection_8h-source.html#l00215">connection::fd</a>, <a class="el" href="users_8h-source.html#l00162">flood</a>, <a class="el" href="users_8h-source.html#l00134">fullname</a>, <a class="el" href="connection_8h-source.html#l00243">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00219">connection::host</a>, <a class="el" href="users_8h-source.html#l00125">ident</a>, <a class="el" href="connection_8h-source.html#l00265">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00114">invites</a>, <a class="el" href="connection_8h-source.html#l00223">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00257">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00204">lines_in</a>, <a class="el" href="users_8h-source.html#l00140">modes</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, <a class="el" href="connection_8h-source.html#l00269">connection::nping</a>, <a class="el" href="users_8h-source.html#l00175">oper</a>, <a class="el" href="connection_8h-source.html#l00249">connection::port</a>, <a class="el" href="users_8h-source.html#l00195">recvq</a>, <a class="el" href="connection_8h-source.html#l00253">connection::registered</a>, <a class="el" href="users_8h-source.html#l00205">reset_due</a>, <a class="el" href="users_8h-source.html#l00156">result</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, <a class="el" href="users_8h-source.html#l00146">server</a>, <a class="el" href="connection_8h-source.html#l00261">connection::signon</a>, <a class="el" href="channels_8cpp-source.html#l00107">TIME</a>, <a class="el" href="users_8h-source.html#l00168">timeout</a>, and <a class="el" href="channels_8h-source.html#l00228">ucrec::uc_modes</a>.
182 <p>
183 <div class="fragment"><pre>00029 {
184 00030         <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
185 00031         strcpy(nick,<span class="stringliteral">""</span>);
186 00032         strcpy(ip,<span class="stringliteral">"127.0.0.1"</span>);
187 00033         <a class="code" href="classuserrec.html#o10">timeout</a> = 0;
188 00034         strcpy(ident,<span class="stringliteral">""</span>);
189 00035         strcpy(host,<span class="stringliteral">""</span>);
190 00036         strcpy(dhost,<span class="stringliteral">""</span>);
191 00037         strcpy(fullname,<span class="stringliteral">""</span>);
192 00038         strcpy(modes,<span class="stringliteral">""</span>);
193 00039         strcpy(server,<span class="stringliteral">""</span>);
194 00040         strcpy(awaymsg,<span class="stringliteral">""</span>);
195 00041         strcpy(oper,<span class="stringliteral">""</span>);
196 00042         <a class="code" href="classuserrec.html#o18">reset_due</a> = <a class="code" href="channels_8cpp.html#a37">TIME</a>;
197 00043         <a class="code" href="classuserrec.html#o17">lines_in</a> = 0;
198 00044         <a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="classconnection.html#o10">lastping</a> = <a class="code" href="classconnection.html#o11">signon</a> = <a class="code" href="classconnection.html#o12">idle_lastmsg</a> = <a class="code" href="classconnection.html#o13">nping</a> = <a class="code" href="classconnection.html#o9">registered</a> = 0;
199 00045         <a class="code" href="classuserrec.html#o9">flood</a> = <a class="code" href="classconnection.html#o8">port</a> = <a class="code" href="classconnection.html#o3">bytes_in</a> = <a class="code" href="classconnection.html#o4">bytes_out</a> = <a class="code" href="classconnection.html#o5">cmds_in</a> = <a class="code" href="classconnection.html#o6">cmds_out</a> = 0;
200 00046         <a class="code" href="classconnection.html#o7">haspassed</a> = <span class="keyword">false</span>;
201 00047         <a class="code" href="classuserrec.html#o12">dns_done</a> = <span class="keyword">false</span>;
202 00048         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
203 00049         <a class="code" href="classuserrec.html#o16">sendq</a> = <span class="stringliteral">""</span>;
204 00050         strcpy(result,<span class="stringliteral">""</span>);
205 00051         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
206 00052         {
207 00053                 this-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a> = NULL;
208 00054                 this-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o0">uc_modes</a> = 0;
209 00055         }
210 00056         <a class="code" href="classuserrec.html#r0">invites</a>.clear();
211 00057 }
212 </pre></div>    </td>
213   </tr>
214 </table>
215 <a name="a1" doxytag="userrec::~userrec"></a><p>
216 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
217   <tr>
218     <td class="mdRow">
219       <table cellpadding="0" cellspacing="0" border="0">
220         <tr>
221           <td class="md" nowrap valign="top"> virtual userrec::~<a class="el" href="classuserrec.html">userrec</a> </td>
222           <td class="md" valign="top">(&nbsp;</td>
223           <td class="mdname1" valign="top" nowrap>          </td>
224           <td class="md" valign="top">&nbsp;)&nbsp;</td>
225           <td class="md" nowrap><code> [inline, virtual]</code></td>
226         </tr>
227
228       </table>
229     </td>
230   </tr>
231 </table>
232 <table cellspacing=5 cellpadding=0 border=0>
233   <tr>
234     <td>
235       &nbsp;
236     </td>
237     <td>
238
239 <p>
240
241 <p>
242 Definition at line <a class="el" href="users_8h-source.html#l00222">222</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
243 <p>
244 <div class="fragment"><pre>00222 {  }
245 </pre></div>    </td>
246   </tr>
247 </table>
248 <hr><h2>Member Function Documentation</h2>
249 <a name="a8" doxytag="userrec::AddBuffer"></a><p>
250 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
251   <tr>
252     <td class="mdRow">
253       <table cellpadding="0" cellspacing="0" border="0">
254         <tr>
255           <td class="md" nowrap valign="top"> bool userrec::AddBuffer </td>
256           <td class="md" valign="top">(&nbsp;</td>
257           <td class="md" nowrap valign="top">std::string&nbsp;</td>
258           <td class="mdname1" valign="top" nowrap> <em>a</em>          </td>
259           <td class="md" valign="top">&nbsp;)&nbsp;</td>
260           <td class="md" nowrap></td>
261         </tr>
262
263       </table>
264     </td>
265   </tr>
266 </table>
267 <table cellspacing=5 cellpadding=0 border=0>
268   <tr>
269     <td>
270       &nbsp;
271     </td>
272     <td>
273
274 <p>
275 This method adds data to the buffer of the user. 
276 <p>
277 The buffer can grow to any size within limits of the available memory, managed by the size of a std::string, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted.
278 <p>
279 Definition at line <a class="el" href="users_8cpp-source.html#l00169">169</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
280 <p>
281 References <a class="el" href="users_8h-source.html#l00195">recvq</a>, <a class="el" href="users_8h-source.html#l00218">recvqmax</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.
282 <p>
283 <div class="fragment"><pre>00170 {
284 00171         std::string b = <span class="stringliteral">""</span>;
285 00172         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
286 00173                 <span class="keywordflow">if</span> ((a[i] != <span class="charliteral">'\r'</span>) &amp;&amp; (a[i] != <span class="charliteral">'\0'</span>) &amp;&amp; (a[i] != 7))
287 00174                         b = b + a[i];
288 00175         std::stringstream stream(recvq);
289 00176         stream &lt;&lt; b;
290 00177         <a class="code" href="classuserrec.html#o15">recvq</a> = stream.str();
291 00178         <span class="keywordtype">int</span> i = 0;
292 00179         <span class="comment">// count the size of the first line in the buffer.</span>
293 00180         <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length())
294 00181         {
295 00182                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
296 00183                         <span class="keywordflow">break</span>;
297 00184         }
298 00185         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>.length() &gt; this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>)
299 00186         {
300 00187                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
301 00188                 WriteOpers(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#o15">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#o22">recvqmax</a>);
302 00189         }
303 00190         <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
304 00191         <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
305 00192         <span class="keywordflow">return</span> (i &lt; 600);
306 00193 }
307 </pre></div>    </td>
308   </tr>
309 </table>
310 <a name="a14" doxytag="userrec::AddWriteBuf"></a><p>
311 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
312   <tr>
313     <td class="mdRow">
314       <table cellpadding="0" cellspacing="0" border="0">
315         <tr>
316           <td class="md" nowrap valign="top"> void userrec::AddWriteBuf </td>
317           <td class="md" valign="top">(&nbsp;</td>
318           <td class="md" nowrap valign="top">std::string&nbsp;</td>
319           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
320           <td class="md" valign="top">&nbsp;)&nbsp;</td>
321           <td class="md" nowrap></td>
322         </tr>
323
324       </table>
325     </td>
326   </tr>
327 </table>
328 <table cellspacing=5 cellpadding=0 border=0>
329   <tr>
330     <td>
331       &nbsp;
332     </td>
333     <td>
334
335 <p>
336 Adds to the user's write buffer. 
337 <p>
338 You may add any amount of text up to this users sendq value, if you exceed the sendq value, <a class="el" href="classuserrec.html#a12">SetWriteError()</a> will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.
339 <p>
340 Definition at line <a class="el" href="users_8cpp-source.html#l00225">225</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
341 <p>
342 References <a class="el" href="users_8cpp-source.html#l00271">GetWriteError()</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, <a class="el" href="users_8h-source.html#l00214">sendqmax</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.
343 <p>
344 <div class="fragment"><pre>00226 {
345 00227         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classuserrec.html#a13">GetWriteError</a>() != <span class="stringliteral">""</span>)
346 00228                 <span class="keywordflow">return</span>;
347 00229         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length() &gt; this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>)
348 00230         {
349 00231                 WriteOpers(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#o16">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#o21">sendqmax</a>);
350 00232                 this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
351 00233                 <span class="keywordflow">return</span>;
352 00234         }
353 00235         std::stringstream stream;
354 00236         stream &lt;&lt; <a class="code" href="classuserrec.html#o16">sendq</a> &lt;&lt; data;
355 00237         <a class="code" href="classuserrec.html#o16">sendq</a> = stream.str();
356 00238 }
357 </pre></div>    </td>
358   </tr>
359 </table>
360 <a name="a9" doxytag="userrec::BufferIsReady"></a><p>
361 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
362   <tr>
363     <td class="mdRow">
364       <table cellpadding="0" cellspacing="0" border="0">
365         <tr>
366           <td class="md" nowrap valign="top"> bool userrec::BufferIsReady </td>
367           <td class="md" valign="top">(&nbsp;</td>
368           <td class="mdname1" valign="top" nowrap>          </td>
369           <td class="md" valign="top">&nbsp;)&nbsp;</td>
370           <td class="md" nowrap></td>
371         </tr>
372
373       </table>
374     </td>
375   </tr>
376 </table>
377 <table cellspacing=5 cellpadding=0 border=0>
378   <tr>
379     <td>
380       &nbsp;
381     </td>
382     <td>
383
384 <p>
385 This method returns true if the buffer contains at least one carriage return character (e.g. 
386 <p>
387 one complete line may be read)
388 <p>
389 Definition at line <a class="el" href="users_8cpp-source.html#l00195">195</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
390 <p>
391 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
392 <p>
393 <div class="fragment"><pre>00196 {
394 00197         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#o15">recvq</a>.length(); i++)
395 00198                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a>[i] == <span class="charliteral">'\n'</span>)
396 00199                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
397 00200         <span class="keywordflow">return</span> <span class="keyword">false</span>;
398 00201 }
399 </pre></div>    </td>
400   </tr>
401 </table>
402 <a name="a10" doxytag="userrec::ClearBuffer"></a><p>
403 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
404   <tr>
405     <td class="mdRow">
406       <table cellpadding="0" cellspacing="0" border="0">
407         <tr>
408           <td class="md" nowrap valign="top"> void userrec::ClearBuffer </td>
409           <td class="md" valign="top">(&nbsp;</td>
410           <td class="mdname1" valign="top" nowrap>          </td>
411           <td class="md" valign="top">&nbsp;)&nbsp;</td>
412           <td class="md" nowrap></td>
413         </tr>
414
415       </table>
416     </td>
417   </tr>
418 </table>
419 <table cellspacing=5 cellpadding=0 border=0>
420   <tr>
421     <td>
422       &nbsp;
423     </td>
424     <td>
425
426 <p>
427 This function clears the entire buffer by setting it to an empty string. 
428 <p>
429
430 <p>
431 Definition at line <a class="el" href="users_8cpp-source.html#l00203">203</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
432 <p>
433 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
434 <p>
435 Referenced by <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00681">Server::UserToPseudo()</a>.
436 <p>
437 <div class="fragment"><pre>00204 {
438 00205         <a class="code" href="classuserrec.html#o15">recvq</a> = <span class="stringliteral">""</span>;
439 00206 }
440 </pre></div>    </td>
441   </tr>
442 </table>
443 <a name="a15" doxytag="userrec::FlushWriteBuf"></a><p>
444 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
445   <tr>
446     <td class="mdRow">
447       <table cellpadding="0" cellspacing="0" border="0">
448         <tr>
449           <td class="md" nowrap valign="top"> void userrec::FlushWriteBuf </td>
450           <td class="md" valign="top">(&nbsp;</td>
451           <td class="mdname1" valign="top" nowrap>          </td>
452           <td class="md" valign="top">&nbsp;)&nbsp;</td>
453           <td class="md" nowrap></td>
454         </tr>
455
456       </table>
457     </td>
458   </tr>
459 </table>
460 <table cellspacing=5 cellpadding=0 border=0>
461   <tr>
462     <td>
463       &nbsp;
464     </td>
465     <td>
466
467 <p>
468 Flushes as much of the user's buffer to the file descriptor as possible. 
469 <p>
470 This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method.
471 <p>
472 Definition at line <a class="el" href="users_8cpp-source.html#l00241">241</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
473 <p>
474 References <a class="el" href="connection_8h-source.html#l00231">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00239">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00200">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.
475 <p>
476 <div class="fragment"><pre>00242 {
477 00243         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o16">sendq</a>.length())
478 00244         {
479 00245                 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a>.c_str();
480 00246                 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
481 00247                 <span class="keywordflow">if</span> (n_sent == -1)
482 00248                 {
483 00249                         this-&gt;<a class="code" href="classuserrec.html#a12">SetWriteError</a>(strerror(errno));
484 00250                 }
485 00251                 <span class="keywordflow">else</span>
486 00252                 {
487 00253                         <span class="comment">// advance the queue</span>
488 00254                         tb += n_sent;
489 00255                         this-&gt;<a class="code" href="classuserrec.html#o16">sendq</a> = tb;
490 00256                         <span class="comment">// update the user's stats counters</span>
491 00257                         this-&gt;<a class="code" href="classconnection.html#o4">bytes_out</a> += n_sent;
492 00258                         this-&gt;<a class="code" href="classconnection.html#o6">cmds_out</a>++;
493 00259                 }
494 00260         }
495 00261 }
496 </pre></div>    </td>
497   </tr>
498 </table>
499 <a name="a11" doxytag="userrec::GetBuffer"></a><p>
500 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
501   <tr>
502     <td class="mdRow">
503       <table cellpadding="0" cellspacing="0" border="0">
504         <tr>
505           <td class="md" nowrap valign="top"> std::string userrec::GetBuffer </td>
506           <td class="md" valign="top">(&nbsp;</td>
507           <td class="mdname1" valign="top" nowrap>          </td>
508           <td class="md" valign="top">&nbsp;)&nbsp;</td>
509           <td class="md" nowrap></td>
510         </tr>
511
512       </table>
513     </td>
514   </tr>
515 </table>
516 <table cellspacing=5 cellpadding=0 border=0>
517   <tr>
518     <td>
519       &nbsp;
520     </td>
521     <td>
522
523 <p>
524 This method returns the first available string at the tail end of the buffer and advances the tail end of the buffer past the string. 
525 <p>
526 This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use <a class="el" href="classuserrec.html#a9">BufferIsReady()</a> to check if it is ok to read the buffer before calling <a class="el" href="classuserrec.html#a11">GetBuffer()</a>.
527 <p>
528 Definition at line <a class="el" href="users_8cpp-source.html#l00208">208</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
529 <p>
530 References <a class="el" href="users_8h-source.html#l00195">recvq</a>.
531 <p>
532 <div class="fragment"><pre>00209 {
533 00210         <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#o15">recvq</a> == <span class="stringliteral">""</span>)
534 00211                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
535 00212         <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#o15">recvq</a>.c_str();
536 00213         std::string ret = <span class="stringliteral">""</span>;
537 00214         <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
538 00215         {
539 00216                 ret = ret + *line;
540 00217                 line++;
541 00218         }
542 00219         <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
543 00220                 line++;
544 00221         <a class="code" href="classuserrec.html#o15">recvq</a> = line;
545 00222         <span class="keywordflow">return</span> ret;
546 00223 }
547 </pre></div>    </td>
548   </tr>
549 </table>
550 <a name="a2" doxytag="userrec::GetFullHost"></a><p>
551 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
552   <tr>
553     <td class="mdRow">
554       <table cellpadding="0" cellspacing="0" border="0">
555         <tr>
556           <td class="md" nowrap valign="top"> char * userrec::GetFullHost </td>
557           <td class="md" valign="top">(&nbsp;</td>
558           <td class="mdname1" valign="top" nowrap>          </td>
559           <td class="md" valign="top">&nbsp;)&nbsp;</td>
560           <td class="md" nowrap><code> [virtual]</code></td>
561         </tr>
562
563       </table>
564     </td>
565   </tr>
566 </table>
567 <table cellspacing=5 cellpadding=0 border=0>
568   <tr>
569     <td>
570       &nbsp;
571     </td>
572     <td>
573
574 <p>
575 Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. 
576 <p>
577
578 <p>
579 Definition at line <a class="el" href="users_8cpp-source.html#l00061">61</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
580 <p>
581 References <a class="el" href="users_8h-source.html#l00130">dhost</a>, <a class="el" href="users_8h-source.html#l00125">ident</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, and <a class="el" href="users_8h-source.html#l00156">result</a>.
582 <p>
583 <div class="fragment"><pre>00062 {
584 00063         snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,dhost);
585 00064         <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#o8">result</a>;
586 00065 }
587 </pre></div>    </td>
588   </tr>
589 </table>
590 <a name="a3" doxytag="userrec::GetFullRealHost"></a><p>
591 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
592   <tr>
593     <td class="mdRow">
594       <table cellpadding="0" cellspacing="0" border="0">
595         <tr>
596           <td class="md" nowrap valign="top"> char * userrec::GetFullRealHost </td>
597           <td class="md" valign="top">(&nbsp;</td>
598           <td class="mdname1" valign="top" nowrap>          </td>
599           <td class="md" valign="top">&nbsp;)&nbsp;</td>
600           <td class="md" nowrap><code> [virtual]</code></td>
601         </tr>
602
603       </table>
604     </td>
605   </tr>
606 </table>
607 <table cellspacing=5 cellpadding=0 border=0>
608   <tr>
609     <td>
610       &nbsp;
611     </td>
612     <td>
613
614 <p>
615 Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. 
616 <p>
617 If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
618 <p>
619 Definition at line <a class="el" href="users_8cpp-source.html#l00068">68</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
620 <p>
621 References <a class="el" href="connection_8h-source.html#l00219">connection::host</a>, <a class="el" href="users_8h-source.html#l00125">ident</a>, <a class="el" href="users_8h-source.html#l00121">nick</a>, and <a class="el" href="users_8h-source.html#l00156">result</a>.
622 <p>
623 <div class="fragment"><pre>00069 {
624 00070         snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,nick,ident,host);
625 00071         <span class="keywordflow">return</span> <a class="code" href="classuserrec.html#o8">result</a>;
626 00072 }
627 </pre></div>    </td>
628   </tr>
629 </table>
630 <a name="a13" doxytag="userrec::GetWriteError"></a><p>
631 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
632   <tr>
633     <td class="mdRow">
634       <table cellpadding="0" cellspacing="0" border="0">
635         <tr>
636           <td class="md" nowrap valign="top"> std::string userrec::GetWriteError </td>
637           <td class="md" valign="top">(&nbsp;</td>
638           <td class="mdname1" valign="top" nowrap>          </td>
639           <td class="md" valign="top">&nbsp;)&nbsp;</td>
640           <td class="md" nowrap></td>
641         </tr>
642
643       </table>
644     </td>
645   </tr>
646 </table>
647 <table cellspacing=5 cellpadding=0 border=0>
648   <tr>
649     <td>
650       &nbsp;
651     </td>
652     <td>
653
654 <p>
655 Returns the write error which last occured on this connection or an empty string if none occured. 
656 <p>
657
658 <p>
659 Definition at line <a class="el" href="users_8cpp-source.html#l00271">271</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
660 <p>
661 References <a class="el" href="users_8h-source.html#l00210">WriteError</a>.
662 <p>
663 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>.
664 <p>
665 <div class="fragment"><pre>00272 {
666 00273         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a>;
667 00274 }
668 </pre></div>    </td>
669   </tr>
670 </table>
671 <a name="a7" doxytag="userrec::HasPermission"></a><p>
672 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
673   <tr>
674     <td class="mdRow">
675       <table cellpadding="0" cellspacing="0" border="0">
676         <tr>
677           <td class="md" nowrap valign="top"> bool userrec::HasPermission </td>
678           <td class="md" valign="top">(&nbsp;</td>
679           <td class="md" nowrap valign="top">char *&nbsp;</td>
680           <td class="mdname1" valign="top" nowrap> <em>command</em>          </td>
681           <td class="md" valign="top">&nbsp;)&nbsp;</td>
682           <td class="md" nowrap></td>
683         </tr>
684
685       </table>
686     </td>
687   </tr>
688 </table>
689 <table cellspacing=5 cellpadding=0 border=0>
690   <tr>
691     <td>
692       &nbsp;
693     </td>
694     <td>
695
696 <p>
697 Returns true or false for if a user can execute a privilaged oper command. 
698 <p>
699 This is done by looking up their oper type from <a class="el" href="classuserrec.html#o11">userrec::oper</a>, then referencing this to their oper classes and checking the commands they can execute.
700 <p>
701 Definition at line <a class="el" href="users_8cpp-source.html#l00117">117</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
702 <p>
703 References <a class="el" href="channels_8cpp-source.html#l00101">config_f</a>, and <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.
704 <p>
705 <div class="fragment"><pre>00118 {
706 00119         <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
707 00120         <span class="keywordtype">char</span>* mycmd;
708 00121         <span class="keywordtype">char</span>* savept;
709 00122         <span class="keywordtype">char</span>* savept2;
710 00123         
711 00124         <span class="comment">// are they even an oper at all?</span>
712 00125         <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
713 00126         {
714 00127                 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper"</span>,this-&gt;nick);
715 00128                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;config_f); j++)
716 00129                 {
717 00130                         ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;config_f);
718 00131                         <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
719 00132                         {
720 00133                                 log(DEBUG,<span class="stringliteral">"*** HasPermission: %s is an oper of type '%s'"</span>,this-&gt;nick,this-&gt;oper);
721 00134                                 ConfValue(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;config_f);
722 00135                                 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
723 00136                                 <span class="keywordflow">while</span> (myclass)
724 00137                                 {
725 00138                                         log(DEBUG,<span class="stringliteral">"*** HasPermission: checking classtype '%s'"</span>,myclass);
726 00139                                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;config_f); k++)
727 00140                                         {
728 00141                                                 ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;config_f);
729 00142                                                 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
730 00143                                                 {
731 00144                                                         ConfValue(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;config_f);
732 00145                                                         log(DEBUG,<span class="stringliteral">"*** HasPermission: found class named %s with commands: '%s'"</span>,ClassName,CommandList);
733 00146                                                         
734 00147                                                         
735 00148                                                         mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
736 00149                                                         <span class="keywordflow">while</span> (mycmd)
737 00150                                                         {
738 00151                                                                 <span class="keywordflow">if</span> (!strcasecmp(mycmd,command))
739 00152                                                                 {
740 00153                                                                         log(DEBUG,<span class="stringliteral">"*** Command %s found, returning true"</span>,command);
741 00154                                                                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
742 00155                                                                 }
743 00156                                                                 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
744 00157                                                         }
745 00158                                                 }
746 00159                                         }
747 00160                                         myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
748 00161                                 }
749 00162                         }
750 00163                 }
751 00164         }
752 00165         <span class="keywordflow">return</span> <span class="keyword">false</span>;
753 00166 }
754 </pre></div>    </td>
755   </tr>
756 </table>
757 <a name="a5" doxytag="userrec::InviteTo"></a><p>
758 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
759   <tr>
760     <td class="mdRow">
761       <table cellpadding="0" cellspacing="0" border="0">
762         <tr>
763           <td class="md" nowrap valign="top"> void userrec::InviteTo </td>
764           <td class="md" valign="top">(&nbsp;</td>
765           <td class="md" nowrap valign="top">char *&nbsp;</td>
766           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
767           <td class="md" valign="top">&nbsp;)&nbsp;</td>
768           <td class="md" nowrap><code> [virtual]</code></td>
769         </tr>
770
771       </table>
772     </td>
773   </tr>
774 </table>
775 <table cellspacing=5 cellpadding=0 border=0>
776   <tr>
777     <td>
778       &nbsp;
779     </td>
780     <td>
781
782 <p>
783 Adds a channel to a users invite list (invites them to a channel). 
784 <p>
785
786 <p>
787 Definition at line <a class="el" href="users_8cpp-source.html#l00088">88</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
788 <p>
789 References <a class="el" href="users_8h-source.html#l00039">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.
790 <p>
791 <div class="fragment"><pre>00089 {
792 00090         <a class="code" href="classInvited.html">Invited</a> i;
793 00091         strlcpy(i.<a class="code" href="classInvited.html#o0">channel</a>,channel,CHANMAX);
794 00092         <a class="code" href="classuserrec.html#r0">invites</a>.push_back(i);
795 00093 }
796 </pre></div>    </td>
797   </tr>
798 </table>
799 <a name="a4" doxytag="userrec::IsInvited"></a><p>
800 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
801   <tr>
802     <td class="mdRow">
803       <table cellpadding="0" cellspacing="0" border="0">
804         <tr>
805           <td class="md" nowrap valign="top"> bool userrec::IsInvited </td>
806           <td class="md" valign="top">(&nbsp;</td>
807           <td class="md" nowrap valign="top">char *&nbsp;</td>
808           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
809           <td class="md" valign="top">&nbsp;)&nbsp;</td>
810           <td class="md" nowrap><code> [virtual]</code></td>
811         </tr>
812
813       </table>
814     </td>
815   </tr>
816 </table>
817 <table cellspacing=5 cellpadding=0 border=0>
818   <tr>
819     <td>
820       &nbsp;
821     </td>
822     <td>
823
824 <p>
825 Returns true if a user is invited to a channel. 
826 <p>
827
828 <p>
829 Definition at line <a class="el" href="users_8cpp-source.html#l00074">74</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
830 <p>
831 References <a class="el" href="users_8h-source.html#l00114">invites</a>.
832 <p>
833 <div class="fragment"><pre>00075 {
834 00076         <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#r0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#r0">invites</a>.end(); i++)
835 00077         {
836 00078                 <span class="keywordflow">if</span> (i-&gt;channel) {
837 00079                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
838 00080                         {
839 00081                                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
840 00082                         }
841 00083                 }
842 00084         }
843 00085         <span class="keywordflow">return</span> <span class="keyword">false</span>;
844 00086 }
845 </pre></div>    </td>
846   </tr>
847 </table>
848 <a name="a6" doxytag="userrec::RemoveInvite"></a><p>
849 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
850   <tr>
851     <td class="mdRow">
852       <table cellpadding="0" cellspacing="0" border="0">
853         <tr>
854           <td class="md" nowrap valign="top"> void userrec::RemoveInvite </td>
855           <td class="md" valign="top">(&nbsp;</td>
856           <td class="md" nowrap valign="top">char *&nbsp;</td>
857           <td class="mdname1" valign="top" nowrap> <em>channel</em>          </td>
858           <td class="md" valign="top">&nbsp;)&nbsp;</td>
859           <td class="md" nowrap><code> [virtual]</code></td>
860         </tr>
861
862       </table>
863     </td>
864   </tr>
865 </table>
866 <table cellspacing=5 cellpadding=0 border=0>
867   <tr>
868     <td>
869       &nbsp;
870     </td>
871     <td>
872
873 <p>
874 Removes a channel from a users invite list. 
875 <p>
876 This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
877 <p>
878 Definition at line <a class="el" href="users_8cpp-source.html#l00095">95</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
879 <p>
880 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00114">invites</a>.
881 <p>
882 <div class="fragment"><pre>00096 {
883 00097         log(DEBUG,<span class="stringliteral">"Removing invites"</span>);
884 00098         <span class="keywordflow">if</span> (channel)
885 00099         {
886 00100                 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#r0">invites</a>.size())
887 00101                 {
888 00102                         <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#r0">invites</a>.begin(); i != <a class="code" href="classuserrec.html#r0">invites</a>.end(); i++)
889 00103                         {
890 00104                                 <span class="keywordflow">if</span> (i-&gt;channel)
891 00105                                 {
892 00106                                         <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
893 00107                                         {
894 00108                                                 <a class="code" href="classuserrec.html#r0">invites</a>.erase(i);
895 00109                                                 <span class="keywordflow">return</span>;
896 00110                                         }
897 00111                                 }
898 00112                         }
899 00113                 }
900 00114         }
901 00115 }
902 </pre></div>    </td>
903   </tr>
904 </table>
905 <a name="a12" doxytag="userrec::SetWriteError"></a><p>
906 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
907   <tr>
908     <td class="mdRow">
909       <table cellpadding="0" cellspacing="0" border="0">
910         <tr>
911           <td class="md" nowrap valign="top"> void userrec::SetWriteError </td>
912           <td class="md" valign="top">(&nbsp;</td>
913           <td class="md" nowrap valign="top">std::string&nbsp;</td>
914           <td class="mdname1" valign="top" nowrap> <em>error</em>          </td>
915           <td class="md" valign="top">&nbsp;)&nbsp;</td>
916           <td class="md" nowrap></td>
917         </tr>
918
919       </table>
920     </td>
921   </tr>
922 </table>
923 <table cellspacing=5 cellpadding=0 border=0>
924   <tr>
925     <td>
926       &nbsp;
927     </td>
928     <td>
929
930 <p>
931 Sets the write error for a connection. 
932 <p>
933 This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged.
934 <p>
935 Definition at line <a class="el" href="users_8cpp-source.html#l00263">263</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
936 <p>
937 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="users_8h-source.html#l00210">WriteError</a>.
938 <p>
939 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00241">FlushWriteBuf()</a>.
940 <p>
941 <div class="fragment"><pre>00264 {
942 00265         log(DEBUG,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
943 00266         <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
944 00267         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> == <span class="stringliteral">""</span>)
945 00268                 this-&gt;<a class="code" href="classuserrec.html#o20">WriteError</a> = error;
946 00269 }
947 </pre></div>    </td>
948   </tr>
949 </table>
950 <hr><h2>Member Data Documentation</h2>
951 <a name="o7" doxytag="userrec::awaymsg"></a><p>
952 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
953   <tr>
954     <td class="mdRow">
955       <table cellpadding="0" cellspacing="0" border="0">
956         <tr>
957           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o7">userrec::awaymsg</a>[512]
958       </table>
959     </td>
960   </tr>
961 </table>
962 <table cellspacing=5 cellpadding=0 border=0>
963   <tr>
964     <td>
965       &nbsp;
966     </td>
967     <td>
968
969 <p>
970 The user's away message. 
971 <p>
972 If this string is empty, the user is not marked as away.
973 <p>
974 Definition at line <a class="el" href="users_8h-source.html#l00151">151</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
975 <p>
976 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
977   </tr>
978 </table>
979 <a name="o5" doxytag="userrec::chans"></a><p>
980 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
981   <tr>
982     <td class="mdRow">
983       <table cellpadding="0" cellspacing="0" border="0">
984         <tr>
985           <td class="md" nowrap valign="top"> <a class="el" href="classucrec.html">ucrec</a> <a class="el" href="classuserrec.html#o5">userrec::chans</a>[MAXCHANS]
986       </table>
987     </td>
988   </tr>
989 </table>
990 <table cellspacing=5 cellpadding=0 border=0>
991   <tr>
992     <td>
993       &nbsp;
994     </td>
995     <td>
996
997 <p>
998
999 <p>
1000 Definition at line <a class="el" href="users_8h-source.html#l00142">142</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1001 <p>
1002 Referenced by <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1003   </tr>
1004 </table>
1005 <a name="o2" doxytag="userrec::dhost"></a><p>
1006 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1007   <tr>
1008     <td class="mdRow">
1009       <table cellpadding="0" cellspacing="0" border="0">
1010         <tr>
1011           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o2">userrec::dhost</a>[160]
1012       </table>
1013     </td>
1014   </tr>
1015 </table>
1016 <table cellspacing=5 cellpadding=0 border=0>
1017   <tr>
1018     <td>
1019       &nbsp;
1020     </td>
1021     <td>
1022
1023 <p>
1024 The host displayed to non-opers (used for cloaking etc). 
1025 <p>
1026 This usually matches the value of <a class="el" href="classconnection.html#o1">userrec::host</a>.
1027 <p>
1028 Definition at line <a class="el" href="users_8h-source.html#l00130">130</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1029 <p>
1030 Referenced by <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1031   </tr>
1032 </table>
1033 <a name="o12" doxytag="userrec::dns_done"></a><p>
1034 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1035   <tr>
1036     <td class="mdRow">
1037       <table cellpadding="0" cellspacing="0" border="0">
1038         <tr>
1039           <td class="md" nowrap valign="top"> bool <a class="el" href="classuserrec.html#o12">userrec::dns_done</a>
1040       </table>
1041     </td>
1042   </tr>
1043 </table>
1044 <table cellspacing=5 cellpadding=0 border=0>
1045   <tr>
1046     <td>
1047       &nbsp;
1048     </td>
1049     <td>
1050
1051 <p>
1052 True when <a class="el" href="classDNS.html">DNS</a> lookups are completed. 
1053 <p>
1054
1055 <p>
1056 Definition at line <a class="el" href="users_8h-source.html#l00179">179</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1057 <p>
1058 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1059   </tr>
1060 </table>
1061 <a name="o9" doxytag="userrec::flood"></a><p>
1062 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1063   <tr>
1064     <td class="mdRow">
1065       <table cellpadding="0" cellspacing="0" border="0">
1066         <tr>
1067           <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o9">userrec::flood</a>
1068       </table>
1069     </td>
1070   </tr>
1071 </table>
1072 <table cellspacing=5 cellpadding=0 border=0>
1073   <tr>
1074     <td>
1075       &nbsp;
1076     </td>
1077     <td>
1078
1079 <p>
1080 Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. 
1081 <p>
1082
1083 <p>
1084 Definition at line <a class="el" href="users_8h-source.html#l00162">162</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1085 <p>
1086 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1087   </tr>
1088 </table>
1089 <a name="o3" doxytag="userrec::fullname"></a><p>
1090 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1091   <tr>
1092     <td class="mdRow">
1093       <table cellpadding="0" cellspacing="0" border="0">
1094         <tr>
1095           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o3">userrec::fullname</a>[128]
1096       </table>
1097     </td>
1098   </tr>
1099 </table>
1100 <table cellspacing=5 cellpadding=0 border=0>
1101   <tr>
1102     <td>
1103       &nbsp;
1104     </td>
1105     <td>
1106
1107 <p>
1108 The users full name. 
1109 <p>
1110
1111 <p>
1112 Definition at line <a class="el" href="users_8h-source.html#l00134">134</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1113 <p>
1114 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1115   </tr>
1116 </table>
1117 <a name="o1" doxytag="userrec::ident"></a><p>
1118 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1119   <tr>
1120     <td class="mdRow">
1121       <table cellpadding="0" cellspacing="0" border="0">
1122         <tr>
1123           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o1">userrec::ident</a>[16]
1124       </table>
1125     </td>
1126   </tr>
1127 </table>
1128 <table cellspacing=5 cellpadding=0 border=0>
1129   <tr>
1130     <td>
1131       &nbsp;
1132     </td>
1133     <td>
1134
1135 <p>
1136 The users ident reply. 
1137 <p>
1138
1139 <p>
1140 Definition at line <a class="el" href="users_8h-source.html#l00125">125</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1141 <p>
1142 Referenced by <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00068">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00681">Server::UserToPseudo()</a>.    </td>
1143   </tr>
1144 </table>
1145 <a name="r0" doxytag="userrec::invites"></a><p>
1146 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1147   <tr>
1148     <td class="mdRow">
1149       <table cellpadding="0" cellspacing="0" border="0">
1150         <tr>
1151           <td class="md" nowrap valign="top"> <a class="el" href="users_8h.html#a6">InvitedList</a> <a class="el" href="classuserrec.html#r0">userrec::invites</a><code> [private]</code>
1152       </table>
1153     </td>
1154   </tr>
1155 </table>
1156 <table cellspacing=5 cellpadding=0 border=0>
1157   <tr>
1158     <td>
1159       &nbsp;
1160     </td>
1161     <td>
1162
1163 <p>
1164 A list of channels the user has a pending invite to. 
1165 <p>
1166
1167 <p>
1168 Definition at line <a class="el" href="users_8h-source.html#l00114">114</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1169 <p>
1170 Referenced by <a class="el" href="users_8cpp-source.html#l00088">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00074">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00095">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1171   </tr>
1172 </table>
1173 <a name="o17" doxytag="userrec::lines_in"></a><p>
1174 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1175   <tr>
1176     <td class="mdRow">
1177       <table cellpadding="0" cellspacing="0" border="0">
1178         <tr>
1179           <td class="md" nowrap valign="top"> int <a class="el" href="classuserrec.html#o17">userrec::lines_in</a>
1180       </table>
1181     </td>
1182   </tr>
1183 </table>
1184 <table cellspacing=5 cellpadding=0 border=0>
1185   <tr>
1186     <td>
1187       &nbsp;
1188     </td>
1189     <td>
1190
1191 <p>
1192 Flood counters. 
1193 <p>
1194
1195 <p>
1196 Definition at line <a class="el" href="users_8h-source.html#l00204">204</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1197 <p>
1198 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1199   </tr>
1200 </table>
1201 <a name="o4" doxytag="userrec::modes"></a><p>
1202 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1203   <tr>
1204     <td class="mdRow">
1205       <table cellpadding="0" cellspacing="0" border="0">
1206         <tr>
1207           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o4">userrec::modes</a>[MAXBUF]
1208       </table>
1209     </td>
1210   </tr>
1211 </table>
1212 <table cellspacing=5 cellpadding=0 border=0>
1213   <tr>
1214     <td>
1215       &nbsp;
1216     </td>
1217     <td>
1218
1219 <p>
1220 The user's mode string. 
1221 <p>
1222 This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit.
1223 <p>
1224 Definition at line <a class="el" href="users_8h-source.html#l00140">140</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1225 <p>
1226 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1227   </tr>
1228 </table>
1229 <a name="o0" doxytag="userrec::nick"></a><p>
1230 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1231   <tr>
1232     <td class="mdRow">
1233       <table cellpadding="0" cellspacing="0" border="0">
1234         <tr>
1235           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o0">userrec::nick</a>[NICKMAX]
1236       </table>
1237     </td>
1238   </tr>
1239 </table>
1240 <table cellspacing=5 cellpadding=0 border=0>
1241   <tr>
1242     <td>
1243       &nbsp;
1244     </td>
1245     <td>
1246
1247 <p>
1248 The users nickname. 
1249 <p>
1250 An invalid nickname indicates an unregistered connection prior to the NICK command.
1251 <p>
1252 Definition at line <a class="el" href="users_8h-source.html#l00121">121</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1253 <p>
1254 Referenced by <a class="el" href="modules_8cpp-source.html#l00967">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00068">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00700">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1255   </tr>
1256 </table>
1257 <a name="o11" doxytag="userrec::oper"></a><p>
1258 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1259   <tr>
1260     <td class="mdRow">
1261       <table cellpadding="0" cellspacing="0" border="0">
1262         <tr>
1263           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o11">userrec::oper</a>[NICKMAX]
1264       </table>
1265     </td>
1266   </tr>
1267 </table>
1268 <table cellspacing=5 cellpadding=0 border=0>
1269   <tr>
1270     <td>
1271       &nbsp;
1272     </td>
1273     <td>
1274
1275 <p>
1276 The oper type they logged in as, if they are an oper. 
1277 <p>
1278 This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag.
1279 <p>
1280 Definition at line <a class="el" href="users_8h-source.html#l00175">175</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1281 <p>
1282 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1283   </tr>
1284 </table>
1285 <a name="o14" doxytag="userrec::password"></a><p>
1286 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1287   <tr>
1288     <td class="mdRow">
1289       <table cellpadding="0" cellspacing="0" border="0">
1290         <tr>
1291           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o14">userrec::password</a>[MAXBUF]
1292       </table>
1293     </td>
1294   </tr>
1295 </table>
1296 <table cellspacing=5 cellpadding=0 border=0>
1297   <tr>
1298     <td>
1299       &nbsp;
1300     </td>
1301     <td>
1302
1303 <p>
1304 Password specified by the user when they registered. 
1305 <p>
1306 This is stored even if the  block doesnt need a password, so that modules may check it.
1307 <p>
1308 Definition at line <a class="el" href="users_8h-source.html#l00189">189</a> of file <a class="el" href="users_8h-source.html">users.h</a>.    </td>
1309   </tr>
1310 </table>
1311 <a name="o13" doxytag="userrec::pingmax"></a><p>
1312 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1313   <tr>
1314     <td class="mdRow">
1315       <table cellpadding="0" cellspacing="0" border="0">
1316         <tr>
1317           <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classuserrec.html#o13">userrec::pingmax</a>
1318       </table>
1319     </td>
1320   </tr>
1321 </table>
1322 <table cellspacing=5 cellpadding=0 border=0>
1323   <tr>
1324     <td>
1325       &nbsp;
1326     </td>
1327     <td>
1328
1329 <p>
1330 Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; tag. 
1331 <p>
1332
1333 <p>
1334 Definition at line <a class="el" href="users_8h-source.html#l00183">183</a> of file <a class="el" href="users_8h-source.html">users.h</a>.    </td>
1335   </tr>
1336 </table>
1337 <a name="o15" doxytag="userrec::recvq"></a><p>
1338 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1339   <tr>
1340     <td class="mdRow">
1341       <table cellpadding="0" cellspacing="0" border="0">
1342         <tr>
1343           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o15">userrec::recvq</a>
1344       </table>
1345     </td>
1346   </tr>
1347 </table>
1348 <table cellspacing=5 cellpadding=0 border=0>
1349   <tr>
1350     <td>
1351       &nbsp;
1352     </td>
1353     <td>
1354
1355 <p>
1356 User's receive queue. 
1357 <p>
1358 Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
1359 <p>
1360 Definition at line <a class="el" href="users_8h-source.html#l00195">195</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1361 <p>
1362 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00195">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00203">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00208">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1363   </tr>
1364 </table>
1365 <a name="o22" doxytag="userrec::recvqmax"></a><p>
1366 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1367   <tr>
1368     <td class="mdRow">
1369       <table cellpadding="0" cellspacing="0" border="0">
1370         <tr>
1371           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o22">userrec::recvqmax</a>
1372       </table>
1373     </td>
1374   </tr>
1375 </table>
1376 <table cellspacing=5 cellpadding=0 border=0>
1377   <tr>
1378     <td>
1379       &nbsp;
1380     </td>
1381     <td>
1382
1383 <p>
1384 Maximum size this user's recvq can become. 
1385 <p>
1386
1387 <p>
1388 Definition at line <a class="el" href="users_8h-source.html#l00218">218</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1389 <p>
1390 Referenced by <a class="el" href="users_8cpp-source.html#l00169">AddBuffer()</a>.    </td>
1391   </tr>
1392 </table>
1393 <a name="o18" doxytag="userrec::reset_due"></a><p>
1394 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1395   <tr>
1396     <td class="mdRow">
1397       <table cellpadding="0" cellspacing="0" border="0">
1398         <tr>
1399           <td class="md" nowrap valign="top"> time_t <a class="el" href="classuserrec.html#o18">userrec::reset_due</a>
1400       </table>
1401     </td>
1402   </tr>
1403 </table>
1404 <table cellspacing=5 cellpadding=0 border=0>
1405   <tr>
1406     <td>
1407       &nbsp;
1408     </td>
1409     <td>
1410
1411 <p>
1412
1413 <p>
1414 Definition at line <a class="el" href="users_8h-source.html#l00205">205</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1415 <p>
1416 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1417   </tr>
1418 </table>
1419 <a name="o8" doxytag="userrec::result"></a><p>
1420 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1421   <tr>
1422     <td class="mdRow">
1423       <table cellpadding="0" cellspacing="0" border="0">
1424         <tr>
1425           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o8">userrec::result</a>[256]
1426       </table>
1427     </td>
1428   </tr>
1429 </table>
1430 <table cellspacing=5 cellpadding=0 border=0>
1431   <tr>
1432     <td>
1433       &nbsp;
1434     </td>
1435     <td>
1436
1437 <p>
1438 Stores the result of the last GetFullHost or GetRealHost call. 
1439 <p>
1440 You may use this to increase the speed of use of this class.
1441 <p>
1442 Definition at line <a class="el" href="users_8h-source.html#l00156">156</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1443 <p>
1444 Referenced by <a class="el" href="users_8cpp-source.html#l00061">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00068">GetFullRealHost()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1445   </tr>
1446 </table>
1447 <a name="o16" doxytag="userrec::sendq"></a><p>
1448 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1449   <tr>
1450     <td class="mdRow">
1451       <table cellpadding="0" cellspacing="0" border="0">
1452         <tr>
1453           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o16">userrec::sendq</a>
1454       </table>
1455     </td>
1456   </tr>
1457 </table>
1458 <table cellspacing=5 cellpadding=0 border=0>
1459   <tr>
1460     <td>
1461       &nbsp;
1462     </td>
1463     <td>
1464
1465 <p>
1466 User's send queue. 
1467 <p>
1468 Lines waiting to be sent are stored here until their buffer is flushed.
1469 <p>
1470 Definition at line <a class="el" href="users_8h-source.html#l00200">200</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1471 <p>
1472 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00241">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1473   </tr>
1474 </table>
1475 <a name="o21" doxytag="userrec::sendqmax"></a><p>
1476 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1477   <tr>
1478     <td class="mdRow">
1479       <table cellpadding="0" cellspacing="0" border="0">
1480         <tr>
1481           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o21">userrec::sendqmax</a>
1482       </table>
1483     </td>
1484   </tr>
1485 </table>
1486 <table cellspacing=5 cellpadding=0 border=0>
1487   <tr>
1488     <td>
1489       &nbsp;
1490     </td>
1491     <td>
1492
1493 <p>
1494 Maximum size this user's sendq can become. 
1495 <p>
1496
1497 <p>
1498 Definition at line <a class="el" href="users_8h-source.html#l00214">214</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1499 <p>
1500 Referenced by <a class="el" href="users_8cpp-source.html#l00225">AddWriteBuf()</a>.    </td>
1501   </tr>
1502 </table>
1503 <a name="o6" doxytag="userrec::server"></a><p>
1504 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1505   <tr>
1506     <td class="mdRow">
1507       <table cellpadding="0" cellspacing="0" border="0">
1508         <tr>
1509           <td class="md" nowrap valign="top"> char <a class="el" href="classuserrec.html#o6">userrec::server</a>[256]
1510       </table>
1511     </td>
1512   </tr>
1513 </table>
1514 <table cellspacing=5 cellpadding=0 border=0>
1515   <tr>
1516     <td>
1517       &nbsp;
1518     </td>
1519     <td>
1520
1521 <p>
1522 The server the user is connected to. 
1523 <p>
1524
1525 <p>
1526 Definition at line <a class="el" href="users_8h-source.html#l00146">146</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1527 <p>
1528 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1529   </tr>
1530 </table>
1531 <a name="o19" doxytag="userrec::threshold"></a><p>
1532 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1533   <tr>
1534     <td class="mdRow">
1535       <table cellpadding="0" cellspacing="0" border="0">
1536         <tr>
1537           <td class="md" nowrap valign="top"> long <a class="el" href="classuserrec.html#o19">userrec::threshold</a>
1538       </table>
1539     </td>
1540   </tr>
1541 </table>
1542 <table cellspacing=5 cellpadding=0 border=0>
1543   <tr>
1544     <td>
1545       &nbsp;
1546     </td>
1547     <td>
1548
1549 <p>
1550
1551 <p>
1552 Definition at line <a class="el" href="users_8h-source.html#l00206">206</a> of file <a class="el" href="users_8h-source.html">users.h</a>.    </td>
1553   </tr>
1554 </table>
1555 <a name="o10" doxytag="userrec::timeout"></a><p>
1556 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1557   <tr>
1558     <td class="mdRow">
1559       <table cellpadding="0" cellspacing="0" border="0">
1560         <tr>
1561           <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classuserrec.html#o10">userrec::timeout</a>
1562       </table>
1563     </td>
1564   </tr>
1565 </table>
1566 <table cellspacing=5 cellpadding=0 border=0>
1567   <tr>
1568     <td>
1569       &nbsp;
1570     </td>
1571     <td>
1572
1573 <p>
1574 Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected. 
1575 <p>
1576
1577 <p>
1578 Definition at line <a class="el" href="users_8h-source.html#l00168">168</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1579 <p>
1580 Referenced by <a class="el" href="users_8cpp-source.html#l00028">userrec()</a>.    </td>
1581   </tr>
1582 </table>
1583 <a name="o20" doxytag="userrec::WriteError"></a><p>
1584 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1585   <tr>
1586     <td class="mdRow">
1587       <table cellpadding="0" cellspacing="0" border="0">
1588         <tr>
1589           <td class="md" nowrap valign="top"> std::string <a class="el" href="classuserrec.html#o20">userrec::WriteError</a>
1590       </table>
1591     </td>
1592   </tr>
1593 </table>
1594 <table cellspacing=5 cellpadding=0 border=0>
1595   <tr>
1596     <td>
1597       &nbsp;
1598     </td>
1599     <td>
1600
1601 <p>
1602
1603 <p>
1604 Definition at line <a class="el" href="users_8h-source.html#l00210">210</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
1605 <p>
1606 Referenced by <a class="el" href="users_8cpp-source.html#l00271">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00263">SetWriteError()</a>.    </td>
1607   </tr>
1608 </table>
1609 <hr>The documentation for this class was generated from the following files:<ul>
1610 <li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
1611 <hr size="1"><address style="align: right;"><small>Generated on Fri May 13 02:00:14 2005 for InspIRCd by
1612 <a href="http://www.doxygen.org/index.html">
1613 <img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
1614 </a>1.3.3 </small></address>
1615 </body>
1616 </html>